@@ -2,67 +2,62 @@ import { webgalStore } from '@/store/store';
22import { setGlobalVar } from '@/store/userDataReducer' ;
33import { setEnableAppreciationMode } from '@/store/GUIReducer' ;
44import { Live2D , WebGAL } from '@/Core/WebGAL' ;
5- import { WebgalParser } from '@/Core/parser/sceneParser' ;
65import { getStorageAsync , setStorage } from '@/Core/controller/storage/storageController' ;
76import { initKey } from '@/Core/controller/storage/fastSaveLoad' ;
87import { getFastSaveFromStorage , getSavesFromStorage } from '@/Core/controller/storage/savesController' ;
98import { logger } from '@/Core/util/logger' ;
109import axios from 'axios' ;
10+ import { IWebgalConfig } from 'webgal-parser/build/types/configParser/configParser' ;
1111
1212/**
1313 * 获取游戏信息
1414 * @param url 游戏信息路径
1515 */
16- export const infoFetcher = ( url : string ) => {
16+ export const infoFetcher = async ( url : string ) => {
1717 const dispatch = webgalStore . dispatch ;
18- axios . get ( url ) . then ( async ( r ) => {
19- let gameConfigRaw : string = r . data ;
20- let gameConfig = WebgalParser . parseConfig ( gameConfigRaw ) ;
21- logger . info ( '获取到游戏信息' , gameConfig ) ;
22- // 先把 key 找到并设置了
23- const keyItem = gameConfig . find ( ( e ) => e . command === 'Game_key' ) ;
24- WebGAL . gameKey = ( keyItem ?. args ?. [ 0 ] as string ) ?? '' ;
25- initKey ( ) ;
26- await getStorageAsync ( ) ;
27- getFastSaveFromStorage ( ) ;
28- getSavesFromStorage ( 0 , 0 ) ;
29- // 按照游戏的配置开始设置对应的状态
30- gameConfig . forEach ( ( e ) => {
31- const { command, args } = e ;
32- if ( args . length > 0 ) {
33- if ( args . length > 1 ) {
34- dispatch (
35- setGlobalVar ( {
36- key : command ,
37- value : args . join ( '|' ) ,
38- } ) ,
39- ) ;
40- } else {
41- let res : any = args [ 0 ] . trim ( ) ;
42- if ( / ^ ( t r u e | f a l s e ) $ / g. test ( args [ 0 ] ) ) {
43- res = res === 'true' ;
44- } else if ( / ^ [ 0 - 9 ] + \. ? [ 0 - 9 ] + $ / g. test ( args [ 0 ] ) ) {
45- res = Number ( res ) ;
46- }
47-
48- dispatch (
49- setGlobalVar ( {
50- key : command ,
51- value : res ,
52- } ) ,
53- ) ;
54-
55- if ( command === 'Enable_Appreciation' ) {
56- dispatch ( setEnableAppreciationMode ( res ) ) ;
57- }
58- if ( command === 'Legacy_Expression_Blend_Mode' ) {
59- Live2D . legacyExpressionBlendMode = res === true ;
60- }
61- }
62- }
63- } ) ;
64- // @ts -expect-error renderPromiseResolve is a global variable
65- window . renderPromiseResolve ( ) ;
66- setStorage ( ) ;
67- } ) ;
18+ const resp = await axios . get ( url ) ;
19+ const gameConfig : IWebgalConfig = resp . data ;
20+ logger . info ( '获取到游戏信息' , gameConfig ) ;
21+ // 先把 key 找到并设置了
22+ WebGAL . gameKey = gameConfig . gameKey ?? '' ;
23+ initKey ( ) ;
24+ await getStorageAsync ( ) ;
25+ getFastSaveFromStorage ( ) ;
26+ getSavesFromStorage ( 0 , 0 ) ;
27+ // 将游戏配置写入为全局变量
28+ for ( const [ key , value ] of Object . entries ( gameConfig ) ) {
29+ if ( value === undefined ) continue ;
30+ if ( typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string' ) {
31+ dispatch (
32+ setGlobalVar ( {
33+ key : key ,
34+ value : value ,
35+ } ) ,
36+ ) ;
37+ } else if ( Array . isArray ( value ) ) {
38+ dispatch (
39+ setGlobalVar ( {
40+ key : key ,
41+ value : value . join ( '|' ) ,
42+ } ) ,
43+ ) ;
44+ } else {
45+ dispatch (
46+ setGlobalVar ( {
47+ key : key ,
48+ value : String ( value ) ,
49+ } ) ,
50+ ) ;
51+ }
52+ }
53+ // 配置游戏
54+ if ( gameConfig . enableAppreciation !== undefined ) {
55+ dispatch ( setEnableAppreciationMode ( gameConfig . enableAppreciation ) ) ;
56+ }
57+ if ( gameConfig . enableLegacyExpressionBlendMode !== undefined ) {
58+ Live2D . legacyExpressionBlendMode = gameConfig . enableLegacyExpressionBlendMode ;
59+ }
60+ // @ts -expect-error renderPromiseResolve is a global variable
61+ window . renderPromiseResolve ( ) ;
62+ setStorage ( ) ;
6863} ;
0 commit comments