From 8fa74b132fe8f5084901bddbeba246843aad2a83 Mon Sep 17 00:00:00 2001 From: Mahiru Date: Sat, 2 Mar 2024 16:42:21 +0800 Subject: [PATCH] fix: can not continue game after calling 'end' --- packages/webgal/src/Core/gameScripts/end.ts | 11 +++++++++-- packages/webgal/src/store/userDataReducer.ts | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/webgal/src/Core/gameScripts/end.ts b/packages/webgal/src/Core/gameScripts/end.ts index 2d17cfe6..adb2bc13 100644 --- a/packages/webgal/src/Core/gameScripts/end.ts +++ b/packages/webgal/src/Core/gameScripts/end.ts @@ -7,8 +7,9 @@ import { resetStage } from '@/Core/controller/stage/resetStage'; import { webgalStore } from '@/store/store'; import { setVisibility } from '@/store/GUIReducer'; import { playBgm } from '@/Core/controller/stage/playBgm'; - import { WebGAL } from '@/Core/WebGAL'; +import { resetFastSave } from '@/store/userDataReducer'; +import { syncStorageFast } from '@/Core/controller/storage/storageController'; /** * 结束游戏 @@ -19,8 +20,14 @@ export const end = (sentence: ISentence): IPerform => { const dispatch = webgalStore.dispatch; // 重新获取初始场景 const sceneUrl: string = assetSetter('start.txt', fileType.scene); - // 场景写入到运行时 + // 为了在 scriptExecutor 自增 sentenceId 后再重置场景 + setTimeout(() => { + WebGAL.sceneManager.resetScene(); + }, 5); + dispatch(resetFastSave()); + syncStorageFast(); sceneFetcher(sceneUrl).then((rawScene) => { + // 场景写入到运行时 WebGAL.sceneManager.sceneData.currentScene = sceneParser(rawScene, 'start.txt', sceneUrl); }); dispatch(setVisibility({ component: 'showTitle', visibility: true })); diff --git a/packages/webgal/src/store/userDataReducer.ts b/packages/webgal/src/store/userDataReducer.ts index a910dcc7..4dff863c 100644 --- a/packages/webgal/src/store/userDataReducer.ts +++ b/packages/webgal/src/store/userDataReducer.ts @@ -129,6 +129,9 @@ const userDataSlice = createSlice({ setFastSave: (state, action: PayloadAction) => { state.quickSaveData = action.payload; }, + resetFastSave: (state) => { + state.quickSaveData = null; + }, resetOptionSet(state) { Object.assign(state.optionData, initialOptionSet); }, @@ -153,6 +156,7 @@ export const { resetOptionSet, resetSaveData, resetAllData, + resetFastSave, } = userDataSlice.actions; export default userDataSlice.reducer;