feat: three-layer scene loading (?scene > config.json > main.json)

This commit is contained in:
2026-06-10 10:48:17 +08:00
parent 25d73f5443
commit 23478f0065
2 changed files with 22 additions and 2 deletions

View File

@@ -43,8 +43,25 @@ const { loadGame, start, resumeAutoSave, makeChoice, clickHotspot, startChapter,
saveGame, loadGameFromSlot, refreshSaves, saveSystem, engine } =
useGameEngine(() => [videoElA.value, videoElB.value])
async function resolveScenePath(): Promise<string> {
const params = new URLSearchParams(location.search)
const queryScene = params.get('scene')
if (queryScene) return queryScene.startsWith('/') ? queryScene : '/' + queryScene
try {
const resp = await fetch('/scenes/config.json')
if (resp.ok) {
const config = await resp.json()
if (config.sceneFile) return '/scenes/' + config.sceneFile
}
} catch { /* config.json optional */ }
return '/scenes/main.json'
}
async function init() {
await loadGame('/scenes/demo.json')
const scenePath = await resolveScenePath()
await loadGame(scenePath)
loading.value = false
hasAutoSave.value = (await saveSystem.load(0)) !== null
}