refactor(map): 重构局内经济系统,统一封装金币操作逻辑

新建MissionEconomy类作为局内经济统一管理入口,整合原分散在HInfoComp、MissionComp、CardComp、MissionCardComp中的金币计算、消费、收益统计逻辑,移除各组件中重复的getMissionCoin、setMissionCoin、getRefreshCost等工具方法,统一维护评分系统的金币统计,提升代码可维护性。
This commit is contained in:
panw
2026-05-21 09:51:32 +08:00
parent 5cdb50b760
commit bbd3e01ae5
6 changed files with 164 additions and 103 deletions

View File

@@ -47,6 +47,7 @@ import { CardInitCoins } from "../common/config/CardSet";
import { Timer } from "db://oops-framework/core/common/timer/Timer";
import { FieldSkillType } from "../common/config/SkillSet";
import { spawningEngine } from "./RogueConfig";
import { MissionEconomy } from "./MissionEconomy";
const { ccclass, property } = _decorator;
/** 任务(关卡)生命周期阶段 */
@@ -795,23 +796,11 @@ export class MissionComp extends CCComp {
if (wave <= 1) return;
if (wave <= this.lastPrepareCoinWave) return;
let reward = Math.max(0, Math.floor(this.prepareBaseCoinReward));
// 使用统一经济管理入口发放每波金币
const reward = MissionEconomy.executeWaveGold(this.prepareBaseCoinReward);
// 增加驻场技能金币收益
const goldBoost = HeroAttrsComp.getFieldSkillTotalValue(FieldSkillType.WaveGold);
reward += goldBoost;
if (reward <= 0) {
this.lastPrepareCoinWave = wave;
return;
}
smc.vmdata.mission_data.coin = Math.max(0, Math.floor((smc.vmdata.mission_data.coin ?? 0) + reward));
// 【评分系统 - 效率分】记录每波次发放的金币奖励收入
smc.vmdata.scores.gold_earned += reward;
this.lastPrepareCoinWave = wave;
oops.message.dispatchEvent(GameEvent.CoinAdd, { delta: reward, syncOnly: true });
mLogger.log(this.debugMode, "MissionComp", "grantPrepareCoinByWave", { wave, reward, boost: goldBoost, coin: smc.vmdata.mission_data.coin });
mLogger.log(this.debugMode, "MissionComp", "grantPrepareCoinByWave", { wave, reward, coin: smc.vmdata.mission_data.coin });
}
// ======================== 怪物数量管理 ========================