feat(评分系统): 实现多维度游戏评分统计与结算
- 扩展 GameScoreStats 数据结构,新增战绩、输出、防御、构建和效率五个维度的统计字段 - 在战斗、治疗、购卡、刷新等关键节点实时采集评分数据 - 实现评分数据重置机制,确保每局数据独立 - 重构总分计算逻辑,采用五维加权评分模型 - 新增初始金币收入统计,完善资源利用效率评估
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
// ==================== 数据管理方法 ====================
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
11
assets/script/game/common/config/scoring-system.md.meta
Normal file
11
assets/script/game/common/config/scoring-system.md.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"importer": "text",
|
||||
"imported": true,
|
||||
"uuid": "8127fa12-7890-4bad-9dff-eeb9e1e4d6c9",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
Reference in New Issue
Block a user