feat(评分系统): 实现多维度游戏评分统计与结算

- 扩展 GameScoreStats 数据结构,新增战绩、输出、防御、构建和效率五个维度的统计字段
- 在战斗、治疗、购卡、刷新等关键节点实时采集评分数据
- 实现评分数据重置机制,确保每局数据独立
- 重构总分计算逻辑,采用五维加权评分模型
- 新增初始金币收入统计,完善资源利用效率评估
This commit is contained in:
walkpan
2026-04-25 21:52:59 +08:00
parent 83d5792b48
commit b588fd06a0
9 changed files with 220 additions and 28 deletions

View File

@@ -92,16 +92,35 @@ export class SingletonModuleComp extends ecs.Comp {
// 生存统计
heal_total: 0, // 治疗总量
lifesteal_total: 0, // 吸血总量
shield_block_count: 0,
dead_trigger_count: 0,
// 资源统计
exp_total: 0, // 经验总数
gold_total: 0, // 金币总数
gold_earned: 0,
gold_spent: 0,
refresh_count: 0,
refresh_hit_count: 0,
// 击杀统计
melee_kill_count: 0, // 近战怪击杀数量
remote_kill_count: 0, // 远程怪击杀数量
elite_kill_count: 0, // 精英怪击杀数量
boss_kill_count: 0, // Boss击杀数
// 战绩统计
wave_win_count: 0,
wave_remain_monsters: 0,
wave_all_alive_count: 0,
passed_wave_20: false,
highest_dmg: 0,
score_combat: 0,
score_output: 0,
score_defense: 0,
score_build: 0,
score_efficiency: 0,
} as GameScoreStats,
gold: 0, // 金币数据MVVM绑定字段
@@ -120,6 +139,51 @@ export class SingletonModuleComp extends ecs.Comp {
}
}
/**
* 重置单局评分数据
* 在每次新战斗开始时调用,确保上一局的得分不会带入新一局
*/
resetScores() {
this.vmdata.scores = {
score: 0,
crt_count: 0,
wf_count: 0,
dod_count: 0,
back_count: 0,
stun_count: 0,
freeze_count: 0,
total_dmg: 0,
atk_count: 0,
avg_dmg: 0,
thorns_dmg: 0,
crit_dmg_total: 0,
heal_total: 0,
lifesteal_total: 0,
shield_block_count: 0,
dead_trigger_count: 0,
exp_total: 0,
gold_total: 0,
gold_earned: 0,
gold_spent: 0,
refresh_count: 0,
refresh_hit_count: 0,
melee_kill_count: 0,
remote_kill_count: 0,
elite_kill_count: 0,
boss_kill_count: 0,
wave_win_count: 0,
wave_remain_monsters: 0,
wave_all_alive_count: 0,
passed_wave_20: false,
highest_dmg: 0,
score_combat: 0,
score_output: 0,
score_defense: 0,
score_build: 0,
score_efficiency: 0,
} as GameScoreStats;
}
// ==================== 数据管理方法 ====================
/**

View File

@@ -54,16 +54,36 @@ export interface GameScoreStats {
// 生存统计
heal_total: number; // 治疗总量
lifesteal_total: number;// 吸血总量
shield_block_count: number; // 格挡次数
dead_trigger_count: number; // 死亡触发次数
// 资源统计
exp_total: number; // 经验总数
gold_total: number; // 金币总数
gold_earned: number; // 总收入金币
gold_spent: number; // 消耗金币
refresh_count: number; // 刷新次数
refresh_hit_count: number; // 刷新命中次数(刷新后选中卡)
// 击杀统计
melee_kill_count: number; // 近战怪击杀数量
remote_kill_count: number; // 远程怪击杀数量
elite_kill_count: number; // 精英怪击杀数量
boss_kill_count: number; // Boss击杀数
// 战绩统计
wave_win_count: number; // 回合胜利次数
wave_remain_monsters: number; // 累计每回合留存敌人数量
wave_all_alive_count: number; // 全员存活胜利次数
passed_wave_20: boolean; // 是否通过第20回合
highest_dmg: number; // 单次最高伤害
// 最终结算分
score_combat: number;
score_output: number;
score_defense: number;
score_build: number;
score_efficiency: number;
}

View File

@@ -0,0 +1,11 @@
{
"ver": "1.0.1",
"importer": "text",
"imported": true,
"uuid": "8127fa12-7890-4bad-9dff-eeb9e1e4d6c9",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}