Implement scene-based chapter quest progression
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-08 11:58:47 +08:00
parent 9d2fc9e4b8
commit bd9fdcbe31
170 changed files with 18259 additions and 1049 deletions

View File

@@ -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, '');