From 305d96e7e5cc1addbd2e4b9c0986275db4e00871 Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 10 Sep 2023 23:20:11 +0800 Subject: [PATCH 1/4] fusion. --- game/game.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game/game.js b/game/game.js index c86ead9e0..8a9a5ae64 100644 --- a/game/game.js +++ b/game/game.js @@ -9732,7 +9732,7 @@ try{ _status.extension=lib.extensions[i][0]; _status.evaluatingExtension=lib.extensions[i][3]; - if (typeof lib.extensions[i][1]=="function") yield lib.extensions[i][1](lib.extensions[i][2],lib.extensions[i][4]); + if (typeof lib.extensions[i][1]=="function") yield gnc.await(lib.extensions[i][1](lib.extensions[i][2],lib.extensions[i][4])); if(lib.extensions[i][4]){ if(lib.extensions[i][4].character){ for(var j in lib.extensions[i][4].character.character){ @@ -33493,7 +33493,7 @@ if(!lib.imported[type]){ lib.imported[type]={}; } - var content2=yield content(lib,game,ui,get,ai,_status); + var content2=yield gnc.await(content(lib,game,ui,get,ai,_status)); if(content2.name){ lib.imported[type][content2.name]=content2; delete content2.name; @@ -33508,7 +33508,7 @@ loadExtension:gnc.async(function*(obj){ var noeval=false; if(typeof obj=='function'){ - obj=yield obj(lib,game,ui,get,ai,_status); + obj=yield gnc.await(obj(lib,game,ui,get,ai,_status)); noeval=true; } lib.extensionMenu['extension_'+obj.name]={ @@ -33626,7 +33626,7 @@ } if(obj.precontent){ _status.extension=obj.name; - yield obj.precontent(cfg); + yield gnc.await(obj.precontent(cfg)); delete _status.extension; } if(obj.content){ From 17c9e6fe7512a9d9fac38197e730912e54890613 Mon Sep 17 00:00:00 2001 From: Rintim Date: Mon, 11 Sep 2023 07:39:32 +0800 Subject: [PATCH 2/4] bugfix. --- game/game.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/game/game.js b/game/game.js index 8a9a5ae64..763e9ecad 100644 --- a/game/game.js +++ b/game/game.js @@ -33500,9 +33500,11 @@ } } }); - if(typeof _status.extensionLoading=="undefined")_status.extensionLoading=[]; const promise=asyncFn(); - _status.extensionLoading.add(promise); + if(type=='extension'){ + if(typeof _status.extensionLoading=="undefined")_status.extensionLoading=[]; + _status.extensionLoading.add(promise); + } return promise; }, loadExtension:gnc.async(function*(obj){ From 4777678bb77b31cfc8b391a4842107062ba5613a Mon Sep 17 00:00:00 2001 From: Rintim Date: Mon, 11 Sep 2023 12:43:05 +0800 Subject: [PATCH 3/4] fix. --- game/game.js | 26 ++++++++++---------------- mode/identity.js | 2 +- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/game/game.js b/game/game.js index 763e9ecad..74ab19dee 100644 --- a/game/game.js +++ b/game/game.js @@ -33485,27 +33485,21 @@ } }, import:function(type,content){ - const asyncFn=gnc.async(function*(){ - if(type=='extension'){ - yield game.loadExtension(content); - } - else{ - if(!lib.imported[type]){ - lib.imported[type]={}; - } - var content2=yield gnc.await(content(lib,game,ui,get,ai,_status)); + if(type=='extension'){ + if(typeof _status.extensionLoading=="undefined")_status.extensionLoading=[]; + const promise=game.loadExtension(content); + _status.extensionLoading.add(promise); + return promise; + } + else{ + if(!lib.imported[type])lib.imported[type]={}; + return gnc.await(content(lib,game,ui,get,ai,_status)).then(content2=>{ if(content2.name){ lib.imported[type][content2.name]=content2; delete content2.name; } - } - }); - const promise=asyncFn(); - if(type=='extension'){ - if(typeof _status.extensionLoading=="undefined")_status.extensionLoading=[]; - _status.extensionLoading.add(promise); + }); } - return promise; }, loadExtension:gnc.async(function*(obj){ var noeval=false; diff --git a/mode/identity.js b/mode/identity.js index 8ec7f6943..50eb32c45 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -134,7 +134,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ step4(); } }; - var step4=lib.genAsync(function*(){ + var step4=lib.gnc.async(function*(){ clear(); ui.window.classList.add('noclick_important'); ui.click.configMenu(); From ca39862a8135ba559a58914ffe8e5cd192b86f38 Mon Sep 17 00:00:00 2001 From: Rintim Date: Mon, 11 Sep 2023 13:22:58 +0800 Subject: [PATCH 4/4] add import wait. --- game/game.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/game/game.js b/game/game.js index 74ab19dee..dfa450fcf 100644 --- a/game/game.js +++ b/game/game.js @@ -8336,15 +8336,23 @@ if(!arrayLengths.length) return previousValue+1; return previousValue+Math.min(...arrayLengths); },0); - const packLoaded=()=>{ + const packLoaded=gnc.async(function*(){ toLoad--; if(toLoad) return; + if(_status.importing){ + let promises=lib.creation.a; + for(const type in _status.importing){ + promises.addArray(_status.importing[type]) + } + yield Promise.allSettled(promises); + delete _status.importing; + } if(_status.windowLoaded){ delete _status.windowLoaded; lib.init.onload(); } else _status.packLoaded=true; - }; + }); if(localStorage.getItem(`${lib.configprefix}playback`)){ toLoad++; lib.init.js(`${lib.assetURL}mode`,lib.config.mode,packLoaded,packLoaded); @@ -33493,12 +33501,16 @@ } else{ if(!lib.imported[type])lib.imported[type]={}; - return gnc.await(content(lib,game,ui,get,ai,_status)).then(content2=>{ + if(typeof _status.importing=="undefined")_status.importing={}; + if(!_status.importing[type])_status.importing[type]=[]; + const promise=gnc.await(content(lib,game,ui,get,ai,_status)).then(content2=>{ if(content2.name){ lib.imported[type][content2.name]=content2; delete content2.name; } }); + _status.importing[type].add(promise); + return promise; } }, loadExtension:gnc.async(function*(obj){