refactor(map): 重构局内经济系统,统一封装金币操作逻辑
新建MissionEconomy类作为局内经济统一管理入口,整合原分散在HInfoComp、MissionComp、CardComp、MissionCardComp中的金币计算、消费、收益统计逻辑,移除各组件中重复的getMissionCoin、setMissionCoin、getRefreshCost等工具方法,统一维护评分系统的金币统计,提升代码可维护性。
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
|
||||
// ======================== 怪物数量管理 ========================
|
||||
|
||||
Reference in New Issue
Block a user