fix(game): 优化结算分数计算与胜利状态传递
1. 重构calculateTotalScore方法,新增胜利和全存活加分逻辑 2. 给MissionComp添加胜利状态缓存,修复结算弹窗参数错误 3. 修正超时强制结算和胜利分支的胜利参数传递
This commit is contained in:
@@ -169,6 +169,8 @@ export class MissionComp extends CCComp {
|
||||
public currentPhase: MissionPhase = MissionPhase.None;
|
||||
/** 是否处于回合间倒计时状态 */
|
||||
private isWaveCountdown: boolean = false;
|
||||
/** 本局是否胜利(open_Victory 时记录,供结算弹窗使用) */
|
||||
private _victory: boolean = false;
|
||||
|
||||
// ======================== ECS 查询匹配器(预缓存) ========================
|
||||
|
||||
@@ -632,7 +634,8 @@ export class MissionComp extends CCComp {
|
||||
smc.mission.pause = true;
|
||||
mLogger.log(this.debugMode, 'MissionComp', " autoNextPhase -> open_Victory logic", this.revive_times);
|
||||
oops.gui.open(UIID.Victory, {
|
||||
victory: false,
|
||||
victory: this._victory,
|
||||
all_alive: this.checkAllHeroAlive(),
|
||||
rewards: this.rewards,
|
||||
game_data: this.game_data,
|
||||
can_revive: this.revive_times > 0
|
||||
@@ -740,10 +743,13 @@ export class MissionComp extends CCComp {
|
||||
*
|
||||
* @param e 事件对象(未使用)
|
||||
* @param is_hero_dead 是否因英雄全灭触发
|
||||
* @param victory 是否胜利(默认 false)
|
||||
*/
|
||||
open_Victory(e: any, is_hero_dead: boolean = false) {
|
||||
open_Victory(e: any, is_hero_dead: boolean = false, victory: boolean = false) {
|
||||
// 战斗失败或胜利,标记暂停状态以切断回合流转逻辑
|
||||
smc.mission.pause = true;
|
||||
// 记录胜利标记,供 BattleEnd 阶段结算弹窗使用
|
||||
this._victory = victory;
|
||||
// 直接切入 BattleEnd,2s 后由 autoNextPhase 自动流转弹窗结算
|
||||
this.changePhase(MissionPhase.BattleEnd);
|
||||
}
|
||||
@@ -907,7 +913,7 @@ export class MissionComp extends CCComp {
|
||||
allAlive,
|
||||
fastClear,
|
||||
});
|
||||
this.open_Victory(null, false);
|
||||
this.open_Victory(null, false, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -961,7 +967,8 @@ export class MissionComp extends CCComp {
|
||||
|
||||
mLogger.log(this.debugMode, 'MissionComp', `[BattleTimeout] 超时强制结算`);
|
||||
|
||||
this.open_Victory(null, false);
|
||||
// 超时按怪物全灭同等处理——视为胜利(但通常会有英雄死亡,all_alive 由结算时实时检测)
|
||||
this.open_Victory(null, false, true);
|
||||
}
|
||||
|
||||
// ======================== 清理 ========================
|
||||
|
||||
Reference in New Issue
Block a user