提交subgame插件

This commit is contained in:
Kirito
2025-07-11 14:49:28 +08:00
commit b225060f0f
1240 changed files with 257564 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
(function (realWindow) {
const subgameControllerKey = '_______subgame_func';
const subGameKey = '"%{subgame_key}"';
let subGameWindow;
let subgameMain;
let propertyBackup = {};
let Loki = realWindow['Loki'] || { pushLog: () => { realWindow.cc.log() } };
realWindow[subgameControllerKey] = realWindow[subgameControllerKey] || {};
realWindow[subgameControllerKey][subGameKey] = {
init: () => {
Loki.pushLog(`SubgameController[${subGameKey}]: init`);
const cc = realWindow.cc;
const sg = realWindow.sg;
const window = subGameWindow = { cc, sg };
"%{subgame_content}"
subgameMain = window['SubGameMain'];
return subgameMain;
},
load: () => {
Loki.pushLog(`SubgameController[${subGameKey}]: load`);
if (!propertyBackup['collisionMatrix']) {
Loki.pushLog(`SubgameController[${subGameKey}]: property backup, collisionMatrix = ${JSON.stringify(cc.game['collisionMatrix'])}`);
propertyBackup['collisionMatrix'] = cc.game['collisionMatrix'];
cc.game['collisionMatrix'] = "%{subgame_collision_matrix}";
}
if (!propertyBackup['groupList']) {
Loki.pushLog(`SubgameController[${subGameKey}]: property backup, groupList = ${JSON.stringify(cc.game['groupList'])}`);
propertyBackup['groupList'] = cc.game['groupList'];
cc.game['groupList'] = "%{subgame_group_list}";
}
},
destroy: () => {
Loki.pushLog(`SubgameController[${subGameKey}]: destroy`);
if (propertyBackup['collisionMatrix']) {
Loki.pushLog(`SubgameController[${subGameKey}]: property restore, collisionMatrix = ${JSON.stringify(propertyBackup['collisionMatrix'])}`);
cc.game['collisionMatrix'] = propertyBackup['collisionMatrix'];
propertyBackup['collisionMatrix'] = null;
}
if (propertyBackup['groupList']) {
Loki.pushLog(`SubgameController[${subGameKey}]: property restore, groupList = ${JSON.stringify(propertyBackup['groupList'])}`);
cc.game['groupList'] = propertyBackup['groupList'];
propertyBackup['groupList'] = null;
}
},
main: () => { return subgameMain },
window: () => { return subGameWindow }
}
})(window);