19 lines
1.4 KiB
JavaScript
19 lines
1.4 KiB
JavaScript
const fs = require('fs'), ts = require('typescript'), assert = require('node:assert/strict');
|
|
const source = fs.readFileSync('assets/Script/GameManager.ts','utf8');
|
|
const body = source.split(' startGame() {')[1].split(' //#region 微信登录')[0];
|
|
const code = ts.transpileModule('function startGame() {'+body,{compilerOptions:{target:ts.ScriptTarget.ES2017}}).outputText;
|
|
let shopDone, entryDone, loaded=0;
|
|
const cc={tween:()=>({to(){return this},start(){}}),v3(){},isValid:()=>true,warn(){},
|
|
assetManager:{loadBundle(name,cb){shopDone=cb}},director:{loadScene(){loaded++}}};
|
|
const ready=new Promise(resolve=>entryDone=resolve);
|
|
const start=new Function('cc','GoldMinerService',code+';return startGame;')(cc,{current:()=>({readForDisplay:()=>ready})});
|
|
(async()=>{
|
|
start.call({node:{}});shopDone();await Promise.resolve();assert.equal(loaded,0);
|
|
entryDone({});await Promise.resolve();await Promise.resolve();assert.equal(loaded,1);
|
|
const prefab=JSON.parse(fs.readFileSync('assets/coin_madness/prefab/CoinMadness.prefab'));
|
|
assert.equal(prefab.find(n=>n.__type__==='cc.Node'&&n._name==='Rules')._active,false);
|
|
const panel=prefab.find(n=>n.message&&n.purchaseButton&&n.card);
|
|
assert.equal(prefab[prefab[panel.message.__id__].node.__id__]._active,false);
|
|
console.log('PASS: homepage waits for first entry snapshot; both footer hints hidden in prefab');
|
|
})().catch(e=>{console.error(e);process.exitCode=1});
|