refactor(mission): 重构关卡结算与刷怪统计逻辑
1. 新增整局跨回合刷怪统计与重置能力,替换原小节统计 2. 修改奖励配置为整局5回合累计结算逻辑 3. 调整失败奖励判定为整局维度统计 4. 重构胜利/失败奖励计算逻辑,适配多回合关卡
This commit is contained in:
@@ -85,6 +85,8 @@ export class MissionMonCompComp extends CCComp {
|
||||
private sectionTargetCount: number = 0;
|
||||
/** 当前小节已刷出怪物数量 */
|
||||
private sectionSpawnedCount: number = 0;
|
||||
/** 整局(整关 5 回合)累计刷出怪物总数:跨回合累计,仅在整关重置(由 MissionComp.data_init 触发) */
|
||||
private missionSpawnedCount: number = 0;
|
||||
/** 待刷出队列(batch=1 的怪物) */
|
||||
private pendingQueue: GeneratedMonster[] = [];
|
||||
/** 刷怪定时器已累积时间 */
|
||||
@@ -241,6 +243,17 @@ export class MissionMonCompComp extends CCComp {
|
||||
}
|
||||
|
||||
this.sectionSpawnedCount++;
|
||||
this.missionSpawnedCount++;
|
||||
}
|
||||
|
||||
/** 整局累计已刷出怪物总数(跨回合,整关重置):供 MissionComp 整局击杀统计 */
|
||||
public getTotalSpawnedCount(): number {
|
||||
return this.missionSpawnedCount;
|
||||
}
|
||||
|
||||
/** 整关重置刷怪统计(由 MissionComp.data_init 在整关开始/重开时调用,回合间不重置) */
|
||||
public resetMissionStats(): void {
|
||||
this.missionSpawnedCount = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -257,25 +270,6 @@ export class MissionMonCompComp extends CCComp {
|
||||
return FightSet.MON_ROW_BACK_X;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本节击杀统计(结算奖励消费):
|
||||
* kills = 已刷出数 - 场上存活数(实时查询,不依赖 MissionComp 的 0.2s 降频同步)
|
||||
* total = 本节目标怪物总数(含未刷出)
|
||||
*/
|
||||
public getSectionKillStats(): { kills: number; total: number } {
|
||||
let alive = 0;
|
||||
ecs.query(ecs.allOf(HeroAttrsComp)).forEach(entity => {
|
||||
const attrs = entity.get(HeroAttrsComp);
|
||||
if (attrs && !attrs.is_dead && attrs.fac === FacSet.MON) {
|
||||
alive++;
|
||||
}
|
||||
});
|
||||
return {
|
||||
kills: Math.max(0, this.sectionSpawnedCount - alive),
|
||||
total: this.sectionTargetCount,
|
||||
};
|
||||
}
|
||||
|
||||
/** ECS 组件移除时触发 */
|
||||
reset() { }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user