refactor: 将刷新石替换为银币作为卡牌刷新消耗
1. 重构全局配置,移除刷新石相关定义,新增银币刷新消耗常量 2. 新增局外持久货币银币的数据结构与管理逻辑 3. 重构卡牌刷新经济系统,统一使用银币进行刷新消耗 4. 更新UI显示与事件通知,适配银币系统变更 5. 调整清屏奖励逻辑,将刷新石奖励改为金币奖励
This commit is contained in:
@@ -21,6 +21,8 @@ export interface GameDate {
|
||||
mission?: number,
|
||||
diamond?: number,
|
||||
gold?: number,
|
||||
/** 银币:局外持久货币,用于局内刷新英雄卡牌,仅通过日常任务等途径积攒 */
|
||||
silver?: number,
|
||||
task?: number,
|
||||
noStop?: boolean,
|
||||
showInfo?: boolean,
|
||||
@@ -110,6 +112,8 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
mission: 1,
|
||||
diamond: 100, //商店购买 及 双倍奖励资源
|
||||
gold: 1000,
|
||||
/** 银币:刷新英雄卡牌专用,每局不重置,仅日常积攒 */
|
||||
silver: 0,
|
||||
task: 0,
|
||||
noStop: false,
|
||||
showInfo: true,
|
||||
@@ -157,7 +161,6 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
level: 1,//关卡等级
|
||||
max_mission: 4,//最大关卡
|
||||
coin: 0,
|
||||
refresh_stone: 0,//刷新石(刷新卡池时优先消耗,不足时消耗金币)
|
||||
time: 15 * 60,//游戏时间
|
||||
},
|
||||
scores: {
|
||||
@@ -216,6 +219,7 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
|
||||
gold: 0, // 金币数据(MVVM绑定字段,镜像 data.gold)
|
||||
diamond: 0, // 钻石数据(MVVM绑定字段,镜像 data.diamond)
|
||||
silver: 0, // 银币数据(MVVM绑定字段,镜像 data.silver,刷新卡牌消耗)
|
||||
switch_effect: true, // 音效开关(MVVM绑定字段)
|
||||
switch_music: true, // 音乐开关(MVVM绑定字段)
|
||||
};
|
||||
@@ -324,6 +328,7 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
public syncCurrencyToView(): void {
|
||||
this.vmdata.gold = this.data.gold ?? 0;
|
||||
this.vmdata.diamond = this.data.diamond ?? 0;
|
||||
this.vmdata.silver = this.data.silver ?? 0;
|
||||
}
|
||||
getGameDate() {
|
||||
let data: GameDate = {
|
||||
@@ -363,6 +368,22 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 变更银币(正数获得 / 负数消耗),以 data 为权威源并镜像到 vmdata。
|
||||
* Why: 银币为局外持久货币,仅用于刷新英雄卡牌,日常任务等途径积攒。
|
||||
* @param silver 变动量
|
||||
* @param is_sync 是否标记脏并触发云端/本地同步
|
||||
*/
|
||||
updateSilver(silver: number, is_sync: boolean = true) {
|
||||
this.data.silver = Math.max(0, (this.data.silver ?? 0) + silver);
|
||||
this.vmdata.silver = this.data.silver;
|
||||
if (is_sync) {
|
||||
gameDataSync.markDataDirty();
|
||||
}
|
||||
oops.message.dispatchEvent(GameEvent.SILVER_UPDATE)
|
||||
return true
|
||||
}
|
||||
|
||||
updateSwitchEffect(isOpen: boolean, is_sync: boolean = true) {
|
||||
this.vmdata.switch_effect = isOpen;
|
||||
if (oops.audio) oops.audio.switchEffect = isOpen;
|
||||
|
||||
@@ -79,7 +79,7 @@ export enum GameEvent {
|
||||
UpdateMissionGet = "UpdateMissionGet",
|
||||
GlobalAttrChange = "GlobalAttrChange",
|
||||
CoinAdd = "CoinAdd",
|
||||
RefreshStone = "RefreshStone", // 刷新石数量变更事件
|
||||
SILVER_UPDATE = "SILVER_UPDATE", // 银币数量变更事件(刷新卡牌消耗)
|
||||
ShowSmallTip = "ShowSmallTip",
|
||||
CardPoolUpgrade = "CardPoolUpgrade",
|
||||
TriggerSkill = "TriggerSkill", // 瞬间触发施法事件
|
||||
|
||||
@@ -73,9 +73,8 @@ export enum FightSet {
|
||||
REFRESH_COST = 2,
|
||||
BASE_COST = 5,
|
||||
INIT_COIN = 7, // 初始金币数
|
||||
INIT_REFRESH_STONE = 3, // 初始刷新石数量
|
||||
/** 单次刷新消耗的刷新石数量 */
|
||||
REFRESH_STONE_COST = 1,
|
||||
/** 单次刷新卡牌消耗的银币数量 */
|
||||
SILVER_REFRESH_COST = 1,
|
||||
/** 全局默认闪避率(百分点),heroSet 未配置时生效 */
|
||||
DEFAULT_DODGE = 15,
|
||||
/** 全局默认命中率(百分点),heroSet 未配置时生效 */
|
||||
|
||||
Reference in New Issue
Block a user