Implement scene-based chapter quest progression
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
@@ -49,22 +49,34 @@ export const CharacterAnimator: React.FC<CharacterAnimatorProps> = ({
|
||||
DEFAULT_ANIMATIONS[state] ??
|
||||
character.animationMap?.[AnimationState.IDLE] ??
|
||||
DEFAULT_ANIMATIONS[AnimationState.IDLE];
|
||||
const startFrame = config.startFrame ?? 1;
|
||||
const frameCount = config.frames;
|
||||
const animationSignature = [
|
||||
state,
|
||||
config.basePath ?? '',
|
||||
config.folder,
|
||||
config.prefix,
|
||||
config.file ?? '',
|
||||
config.extension ?? 'png',
|
||||
startFrame,
|
||||
frameCount,
|
||||
].join('::');
|
||||
|
||||
useEffect(() => {
|
||||
setFrameIndex(config.startFrame || 1);
|
||||
setFrameIndex(startFrame);
|
||||
|
||||
if (config.frames <= 1) return;
|
||||
if (frameCount <= 1) return;
|
||||
|
||||
const interval = setInterval(() => {
|
||||
const endFrame = startFrame + frameCount - 1;
|
||||
|
||||
const interval = window.setInterval(() => {
|
||||
setFrameIndex(prev => {
|
||||
const start = config.startFrame || 1;
|
||||
const end = start + config.frames - 1;
|
||||
return prev >= end ? start : prev + 1;
|
||||
return prev >= endFrame ? startFrame : prev + 1;
|
||||
});
|
||||
}, 100);
|
||||
|
||||
return () => clearInterval(interval);
|
||||
}, [config]);
|
||||
return () => window.clearInterval(interval);
|
||||
}, [animationSignature, frameCount, startFrame]);
|
||||
|
||||
const frameNumber = frameIndex.toString().padStart(2, '0');
|
||||
const normalizedBasePath = config.basePath?.replace(/\/+$/u, '');
|
||||
|
||||
Reference in New Issue
Block a user