fix: 修复新波次开始后游戏阶段状态错误的问题

- 在 MissionComp 中新增波次时调用 enterPreparePhase 进入准备阶段
- 在 MissionMonComp 中检查战斗状态,避免波次结束后继续生成怪物
- 在 MissionCardComp 中监听新波次事件并进入准备阶段
This commit is contained in:
walkpan
2026-03-27 08:39:07 +08:00
parent a291d227a0
commit 4e7c580936
3 changed files with 7 additions and 0 deletions

View File

@@ -144,6 +144,7 @@ export class MissionCardComp extends CCComp {
/** 生命周期事件 */ /** 生命周期事件 */
this.on(GameEvent.MissionStart, this.onMissionStart, this); this.on(GameEvent.MissionStart, this.onMissionStart, this);
this.on(GameEvent.MissionEnd, this.onMissionEnd, this); this.on(GameEvent.MissionEnd, this.onMissionEnd, this);
this.on(GameEvent.NewWave, this.onNewWave, this);
this.on(GameEvent.FightStart, this.onFightStart, this); this.on(GameEvent.FightStart, this.onFightStart, this);
this.on(GameEvent.CoinAdd, this.onCoinAdd, this); this.on(GameEvent.CoinAdd, this.onCoinAdd, this);
oops.message.on(GameEvent.MasterCalled, this.onMasterCalled, this); oops.message.on(GameEvent.MasterCalled, this.onMasterCalled, this);
@@ -175,6 +176,10 @@ export class MissionCardComp extends CCComp {
this.enterBattlePhase(); this.enterBattlePhase();
} }
private onNewWave() {
this.enterPreparePhase();
}
/** 解除按钮监听,避免节点销毁后回调泄漏 */ /** 解除按钮监听,避免节点销毁后回调泄漏 */
private unbindEvents() { private unbindEvents() {
oops.message.off(GameEvent.MasterCalled, this.onMasterCalled, this); oops.message.off(GameEvent.MasterCalled, this.onMasterCalled, this);

View File

@@ -254,6 +254,7 @@ export class MissionComp extends CCComp {
private onNewWave(event: string, data: any) { private onNewWave(event: string, data: any) {
const wave = Number(data?.wave ?? 0); const wave = Number(data?.wave ?? 0);
if (wave <= 0) return; if (wave <= 0) return;
this.enterPreparePhase();
this.currentWave = wave; this.currentWave = wave;
smc.vmdata.mission_data.level = wave; smc.vmdata.mission_data.level = wave;
this.grantPrepareCoinByWave(wave); this.grantPrepareCoinByWave(wave);

View File

@@ -92,6 +92,7 @@ export class MissionMonCompComp extends CCComp {
if(smc.mission.stop_mon_action) return; if(smc.mission.stop_mon_action) return;
if(!smc.mission.in_fight) return; if(!smc.mission.in_fight) return;
this.tryAdvanceWave(); this.tryAdvanceWave();
if(!smc.mission.in_fight) return;
if(smc.mission.stop_spawn_mon) return; if(smc.mission.stop_spawn_mon) return;
this.updateSpecialQueue(dt); this.updateSpecialQueue(dt);
this.updateWaveSpawn(dt); this.updateWaveSpawn(dt);