refactor(SingletonModuleComp): 整理并简化游戏数据相关类型与初始化代码

1. 移除未使用的TalentType导入与冗余的collection字段定义
2. 统一所有对象属性的空格格式,修复代码风格问题
3. 简化overrideLocalDataWithRemote方法中的云端收集数据更新逻辑
4. 重构getGameDate方法,移除不必要的collection字段返回
5. 统一所有方法的命名风格与代码缩进格式
This commit is contained in:
pan
2026-06-02 16:00:41 +08:00
parent c23c12378c
commit 31df25033d

View File

@@ -7,7 +7,6 @@ import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/O
import { GameEvent } from "./config/GameEvent"; import { GameEvent } from "./config/GameEvent";
import { GameScoreStats } from "./config/HeroAttrs"; import { GameScoreStats } from "./config/HeroAttrs";
import { mLogger } from "./Logger"; import { mLogger } from "./Logger";
import { TalentType } from "./config/TalentSet";
import { gameDataSync } from "./GameDataSync"; import { gameDataSync } from "./GameDataSync";
import { FightSet } from "./config/GameSet"; import { FightSet } from "./config/GameSet";
@@ -15,15 +14,9 @@ import { FightSet } from "./config/GameSet";
* 用远程数据覆盖本地数据(统一方法) * 用远程数据覆盖本地数据(统一方法)
* @param remoteData 远程数据(云端或本地调试) * @param remoteData 远程数据(云端或本地调试)
*/ */
export interface GameDate{ export interface GameDate {
gold:number, gold: number,
timestamp?: number, // 用于比对本地与云端数据的最新状态 timestamp?: number, // 用于比对本地与云端数据的最新状态
collection?: {
talents: Record<TalentType, number>,
player_level: number,
player_exp: number,
talent_points?: number,
}
} }
export interface CloudData { export interface CloudData {
openid: string; openid: string;
@@ -42,68 +35,44 @@ export class SingletonModuleComp extends ecs.Comp {
/** 全局缓存的通用图集 */ /** 全局缓存的通用图集 */
uiconsAtlas: SpriteAtlas | null = null; uiconsAtlas: SpriteAtlas | null = null;
openid:string='' openid: string = ''
mission:any={ mission: any = {
status:0, //0:未开始 1:进行中 2:胜利 3:失败 status: 0, //0:未开始 1:进行中 2:胜利 3:失败
play:false, play: false,
pause:false, pause: false,
in_select:false, in_select: false,
in_fight:false, in_fight: false,
stop_mon_action:false, stop_mon_action: false,
}; };
data:any={ data: any = {
score:0, score: 0,
mission:1, mission: 1,
diamond:100, //商店购买 及 双倍奖励资源 diamond: 100, //商店购买 及 双倍奖励资源
gold:1000, gold: 1000,
task:0, task: 0,
noStop:false, noStop: false,
showInfo:true, showInfo: true,
} }
guides:any=[0,0,0,0,0] guides: any = [0, 0, 0, 0, 0]
current_guide:number=0 current_guide: number = 0
collection: {
talents: Record<TalentType, number>;
player_level: number;
player_exp: number;
talent_points?: number;
} = {
talents: {
[TalentType.Attack]: 0,
[TalentType.Hp]: 0,
[TalentType.Critical]: 0,
[TalentType.WindFury]: 0,
[TalentType.Freeze]: 0,
[TalentType.Puncture]: 0,
[TalentType.DeadTrigger]: 0,
[TalentType.Summon]: 0,
[TalentType.BuyDiscount]: 0,
[TalentType.RefreshDiscount]: 0,
[TalentType.SellBonus]: 0
}, // 存储各个天赋的等级: { talent_id: level }
player_level: 1, // 玩家等级
player_exp: 0, // 玩家当前经验
talent_points: 0, // 兼容旧存档的历史字段
};
vmdata: any = { vmdata: any = {
game_over:false, game_over: false,
game_pause:false, game_pause: false,
mission_data:{ mission_data: {
mon_num:0,//怪物数量 mon_num: 0,//怪物数量
hero_num:0,//英雄数量 hero_num: 0,//英雄数量
hero_max_num:FightSet.HERO_MAX_NUM,//英雄可召唤上限 hero_max_num: FightSet.HERO_MAX_NUM,//英雄可召唤上限
hero_extend_max_num:FightSet.HERO_MAX_NUM + 1,//英雄可拓展上限 hero_extend_max_num: FightSet.HERO_MAX_NUM + 1,//英雄可拓展上限
wave_time_num:0,//波次时间 wave_time_num: 0,//波次时间
in_fight:false, in_fight: false,
fight_time:0,//战斗时间 fight_time: 0,//战斗时间
level:1,//关卡等级 level: 1,//关卡等级
max_mission:4,//最大关卡 max_mission: 4,//最大关卡
coin:0, coin: 0,
time:15*60,//游戏时间 time: 15 * 60,//游戏时间
}, },
scores: { scores: {
score: 0, // 基础得分 score: 0, // 基础得分
@@ -229,11 +198,11 @@ export class SingletonModuleComp extends ecs.Comp {
return gameDataSync.isWxClient(); return gameDataSync.isWxClient();
} }
updateCloudData(){ updateCloudData() {
return gameDataSync.updateCloudData(); return gameDataSync.updateCloudData();
} }
getCloudData(){ getCloudData() {
gameDataSync.getCloudData(); gameDataSync.getCloudData();
} }
public async overrideLocalDataWithRemote(cloudData: any) { public async overrideLocalDataWithRemote(cloudData: any) {
@@ -249,16 +218,6 @@ export class SingletonModuleComp extends ecs.Comp {
if (data.gold !== undefined) { if (data.gold !== undefined) {
this.vmdata.gold = data.gold; this.vmdata.gold = data.gold;
} }
// 恢复收集记录
if (data.collection) {
const remoteCol = data.collection;
if (remoteCol.talents) {
Object.assign(this.collection.talents, remoteCol.talents);
}
if (typeof remoteCol.player_level === 'number') this.collection.player_level = remoteCol.player_level;
if (typeof remoteCol.player_exp === 'number') this.collection.player_exp = remoteCol.player_exp;
if (typeof remoteCol.talent_points === 'number') this.collection.talent_points = remoteCol.talent_points;
}
} }
// 触发UI更新 // 触发UI更新
@@ -268,16 +227,15 @@ export class SingletonModuleComp extends ecs.Comp {
mLogger.error(this.debugMode, 'SMC', `[SMC]: 数据覆盖失败:`, error); mLogger.error(this.debugMode, 'SMC', `[SMC]: 数据覆盖失败:`, error);
} }
} }
getGameDate(){ getGameDate() {
let data: GameDate = { let data: GameDate = {
gold: this.vmdata.gold, gold: this.vmdata.gold,
collection: this.collection,
timestamp: Date.now() // 每次获取当前数据结构时都附带最新的时间戳 timestamp: Date.now() // 每次获取当前数据结构时都附带最新的时间戳
}; };
return data; return data;
} }
updateGold(gold:number, is_sync: boolean = true){ updateGold(gold: number, is_sync: boolean = true) {
this.vmdata.gold += gold; this.vmdata.gold += gold;
if (is_sync) { if (is_sync) {
gameDataSync.markDataDirty(); gameDataSync.markDataDirty();