feat: 新增刷新石机制并优化抽卡消耗逻辑

1.  新增refresh_stone玩家数据字段与对应变更事件
2.  实现刷新石的获取、消耗和刷新可用性校验逻辑
3.  抽卡优先消耗刷新石,不足时再扣除金币
4.  为购买按钮添加可配置的消耗标签,优化UI查找逻辑
5.  更新对应预制件绑定新的消耗标签组件
This commit is contained in:
panFD
2026-07-30 13:46:21 +08:00
parent 14fdb0efa9
commit 42c63e6482
12 changed files with 3294 additions and 74 deletions

View File

@@ -376,6 +376,7 @@ export class MissionCardComp extends CCComp {
this.on("PhasePrepareStart", this.onPhasePrepareStart, this);
oops.message.on(GameEvent.CoinAdd, this.onCoinAdd, this);
oops.message.on(GameEvent.RefreshStone, this.onRefreshStone, this);
oops.message.on(GameEvent.MasterCalled, this.onMasterCalled, this);
oops.message.on(GameEvent.HeroDead, this.onHeroDead, this);
oops.message.on(GameEvent.HeroSell, this.onHeroSell, this);
@@ -442,6 +443,11 @@ export class MissionCardComp extends CCComp {
}
}
/** 刷新石数量变更:刷新刷新按钮的可用状态与费用显示 */
private onRefreshStone() {
this.updateDrawCostUI();
}
/** 战斗开始:保留卡牌面板,允许玩家在战斗阶段继续抽卡和召唤英雄 */
private onFightStart() {
this.enterBattlePhase();
@@ -620,6 +626,7 @@ export class MissionCardComp extends CCComp {
/** 解除按钮监听,避免节点销毁后回调泄漏 */
private unbindEvents() {
oops.message.off(GameEvent.CoinAdd, this.onCoinAdd, this);
oops.message.off(GameEvent.RefreshStone, this.onRefreshStone, this);
oops.message.off(GameEvent.MasterCalled, this.onMasterCalled, this);
oops.message.off(GameEvent.HeroDead, this.onHeroDead, this);
oops.message.off(GameEvent.HeroSell, this.onHeroSell, this);
@@ -1700,7 +1707,8 @@ export class MissionCardComp extends CCComp {
}
private canDrawCards() {
return MissionEconomy.getCoin() >= MissionEconomy.getRefreshCost(this.refreshCost);
// 有刷新石时可直接刷新,否则校验金币是否足够
return MissionEconomy.canRefresh(this.refreshCost);
}
private updateDrawCostUI() {