fix(game): 优化结算分数计算与胜利状态传递
1. 重构calculateTotalScore方法,新增胜利和全存活加分逻辑 2. 给MissionComp添加胜利状态缓存,修复结算弹窗参数错误 3. 修正超时强制结算和胜利分支的胜利参数传递
This commit is contained in:
@@ -172,7 +172,7 @@ export class VictoryComp extends CCComp {
|
||||
this.node.getChildByName("btns").getChildByName("next").active = !args.can_revive
|
||||
|
||||
// 计算总分并写入历史纪录
|
||||
this.calculateTotalScore();
|
||||
this.calculateTotalScore(!!args.victory, !!args.all_alive);
|
||||
|
||||
// 计算并发放结算奖励(英雄碎片 + 金币 + 天赋经验)
|
||||
this.grantRewards(!!args.victory);
|
||||
@@ -248,10 +248,22 @@ export class VictoryComp extends CCComp {
|
||||
/**
|
||||
* 计算单局总分并更新到 smc.vmdata.scores.score。
|
||||
* 同时刷新 smc.data.score 历史最高分。
|
||||
*
|
||||
* @param isVictory 是否胜利(胜利 +10 分,失败不加分)
|
||||
* @param allAlive 是否全英雄存活获胜(额外 +5 分)
|
||||
*/
|
||||
private calculateTotalScore() {
|
||||
private calculateTotalScore(isVictory: boolean, allAlive: boolean) {
|
||||
const s = smc.vmdata.scores;
|
||||
|
||||
// 0. 胜负分:胜利 +10,全英雄存活获胜额外 +5,失败不加分
|
||||
let score_result = 0;
|
||||
if (isVictory) {
|
||||
score_result = 10;
|
||||
if (allAlive) {
|
||||
score_result += 5;
|
||||
}
|
||||
}
|
||||
|
||||
// 1. 战绩分:衡量生存能力——活几回合、赢几场。
|
||||
s.score_combat = (s.wave_win_count * 100)
|
||||
- (s.wave_remain_monsters * 15)
|
||||
@@ -288,7 +300,7 @@ export class VictoryComp extends CCComp {
|
||||
}
|
||||
|
||||
// 取整并存储当前局分数
|
||||
s.score = Math.floor(s.score_combat + s.score_output + s.score_defense + s.score_build + s.score_efficiency + highlightBonus);
|
||||
s.score = Math.floor(score_result + s.score_combat + s.score_output + s.score_defense + s.score_build + s.score_efficiency + highlightBonus);
|
||||
|
||||
// 记录滚动前的历史最高分(动画起始值)
|
||||
this._prevBestScore = smc.data.score;
|
||||
|
||||
Reference in New Issue
Block a user