feat: refine exploration presentation and audio flow
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user