diff --git a/packages/webgal/src/Core/util/coreInitialFunction/infoFetcher.ts b/packages/webgal/src/Core/util/coreInitialFunction/infoFetcher.ts index 860f24411..f49fdca9e 100644 --- a/packages/webgal/src/Core/util/coreInitialFunction/infoFetcher.ts +++ b/packages/webgal/src/Core/util/coreInitialFunction/infoFetcher.ts @@ -1,5 +1,5 @@ import { webgalStore } from '@/store/store'; -import { setGlobalVar } from '@/store/userDataReducer'; +import { setGlobalVar, setUserData } from '@/store/userDataReducer'; import { setEnableAppreciationMode } from '@/store/GUIReducer'; import { Live2D, WebGAL } from '@/Core/WebGAL'; import { WebgalParser } from '@/Core/parser/sceneParser'; @@ -8,6 +8,7 @@ import { initKey } from '@/Core/controller/storage/fastSaveLoad'; import { getFastSaveFromStorage, getSavesFromStorage } from '@/Core/controller/storage/savesController'; import { logger } from '@/Core/util/logger'; import axios from 'axios'; +import { IGameVar } from '@/store/stageInterface'; /** * 获取游戏信息 @@ -26,11 +27,14 @@ export const infoFetcher = (url: string) => { await getStorageAsync(); getFastSaveFromStorage(); getSavesFromStorage(0, 0); + // 存储 config.txt 中的配置,用于清除所有数据时还原配置 + const gameConfigInit: IGameVar = {}; // 按照游戏的配置开始设置对应的状态 gameConfig.forEach((e) => { const { command, args } = e; if (args.length > 0) { if (args.length > 1) { + gameConfigInit[command] = args.join('|'); dispatch( setGlobalVar({ key: command, @@ -45,6 +49,7 @@ export const infoFetcher = (url: string) => { res = Number(res); } + gameConfigInit[command] = res; dispatch( setGlobalVar({ key: command, @@ -65,6 +70,8 @@ export const infoFetcher = (url: string) => { } } }); + + dispatch(setUserData({ key: 'gameConfigInit', value: gameConfigInit })); // @ts-expect-error renderPromiseResolve is a global variable window.renderPromiseResolve(); setStorage(); diff --git a/packages/webgal/src/store/userDataInterface.ts b/packages/webgal/src/store/userDataInterface.ts index aacff85a0..111b0e1c9 100644 --- a/packages/webgal/src/store/userDataInterface.ts +++ b/packages/webgal/src/store/userDataInterface.ts @@ -90,6 +90,7 @@ export interface IUserData { globalGameVar: IGameVar; // 不跟随存档的全局变量 optionData: IOptionData; // 用户设置选项数据 appreciationData: IAppreciation; + gameConfigInit: IGameVar; } export interface ISetUserDataPayload { diff --git a/packages/webgal/src/store/userDataReducer.ts b/packages/webgal/src/store/userDataReducer.ts index 0b611f761..e6b5c7c7b 100644 --- a/packages/webgal/src/store/userDataReducer.ts +++ b/packages/webgal/src/store/userDataReducer.ts @@ -46,6 +46,7 @@ export const initState: IUserData = { bgm: [], cg: [], }, + gameConfigInit: {}, }; const userDataSlice = createSlice({ @@ -138,7 +139,8 @@ const userDataSlice = createSlice({ Object.assign(state.optionData, initialOptionSet); }, resetAllData(state) { - Object.assign(state, cloneDeep(initState)); + const { gameConfigInit } = state; + Object.assign(state, { ...cloneDeep(initState), globalGameVar: cloneDeep(gameConfigInit), gameConfigInit }); }, }, });