feat: refine exploration presentation and audio flow

This commit is contained in:
2026-07-28 05:00:24 +09:00
parent 1773bffbf2
commit 495f98372c
20 changed files with 2295 additions and 354 deletions

View File

@@ -160,7 +160,73 @@ try {
'Reduced story motion must stop background panning and particles while retaining one static haze layer.'
);
console.info('Verified visual motion defaults, persistence, title controls, and story/battle motion guards.');
const explorationScenePaths = [
'src/game/scenes/PrologueVillageScene.ts',
'src/game/scenes/PrologueMilitiaCampScene.ts',
'src/game/scenes/CityStayScene.ts',
'src/game/scenes/CampVisitExplorationScene.ts'
];
explorationScenePaths.forEach((scenePath) => {
const sceneSource = readFileSync(scenePath, 'utf8');
assert(
sceneSource.includes("import { isVisualMotionReduced } from '../settings/visualMotion';") &&
sceneSource.includes('this.visualMotionReduced = isVisualMotionReduced();'),
`${scenePath} must load the shared reduced-motion preference on creation.`
);
assert(
sceneSource.includes('applyExplorationCharacterMotion(') &&
sceneSource.includes('this.visualMotionReduced'),
`${scenePath} must use the shared motion helper so idle loops freeze without teleporting walks.`
);
assert(
sceneSource.includes('if (!this.visualMotionReduced)') &&
sceneSource.includes('if (this.visualMotionReduced)'),
`${scenePath} must suppress ambient loops and replace transition motion with static feedback.`
);
assert(
sceneSource.includes('if (this.completionToast === toast)') &&
sceneSource.includes('targets: toast'),
`${scenePath} must bind toast cleanup to the toast that created the timer or tween.`
);
assert(
/this\.autoDialogueInputReadyAt\s*=\s*this\.time\.now \+ inputCarryoverGuardMs;/.test(
sceneSource
) &&
sceneSource.includes(
'time >= this.autoDialogueInputReadyAt'
) &&
sceneSource.includes(
'this.time.now < this.autoDialogueInputReadyAt'
),
`${scenePath} must guard automatic-arrival dialogue from carry-over pointer and keyboard input without blocking modal controls.`
);
});
assert(
readFileSync(
'src/game/scenes/PrologueVillageScene.ts',
'utf8'
).includes('this.time.delayedCall(1510, clearToast)') &&
readFileSync(
'src/game/scenes/PrologueMilitiaCampScene.ts',
'utf8'
).includes('this.time.delayedCall(1510, clearToast)') &&
readFileSync(
'src/game/scenes/CityStayScene.ts',
'utf8'
).includes('this.time.delayedCall(1880, clearToast)') &&
readFileSync(
'src/game/scenes/CampVisitExplorationScene.ts',
'utf8'
).includes(
'this.time.delayedCall(duration + 380, clearToast)'
),
'Reduced-motion toasts must preserve the same total reading time as their animated variants.'
);
console.info(
'Verified visual motion defaults, persistence, title controls, and story/battle/exploration motion guards.'
);
} finally {
await server.close();
}