M5: 显式化导航拓扑约束(无子游戏→子游戏,须经大厅)

确认当前实现已符合用户拓扑:大厅常驻不销毁、子游戏临时销毁、仅 大厅↔子游戏、
子游戏换子游戏须 backgameData 回大厅再 SwitchOverGameData 进新子游戏。

- switchGame 守卫拆分:已在子游戏中(subgameUrl!='')时忽略 SwitchOverGameData 并告警日志
  (此前静默忽略);注释说明拓扑约束与正确流程。无功能变更,仅可观测性。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lanterngamescn
2026-06-25 23:49:47 +08:00
parent cf2eebdad9
commit 9abd571f43
@@ -114,7 +114,13 @@ export struct BridgeGameContainer {
/** 路径 A:大厅 → 子游戏(大厅去激活并保活,创建子游戏 Web)。 */
private switchGame(p?: EventPayload): void {
if (p === undefined || this.subgameUrl !== '') {
if (p === undefined) {
return;
}
// 拓扑约束:仅 大厅↔子游戏,无 子游戏→子游戏。已在子游戏中时忽略——
// 游戏逻辑须先 backgameData 回大厅、再由大厅发 SwitchOverGameData 进新子游戏。
if (this.subgameUrl !== '') {
Logger.tag('BridgeGameContainer').w('SwitchOverGameData ignored: already in subgame (route via lobby)');
return;
}
const d = p as SwitchGamePayload;