From 801659c33ae8716e008da4ca6ff14490e39d3ec5 Mon Sep 17 00:00:00 2001 From: panw Date: Mon, 5 Jan 2026 16:39:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B8=B8=E6=88=8F=E6=95=B0=E6=8D=AE):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=A9=E8=B5=8B=E5=92=8C=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在SingletonModuleComp中添加collection字段记录天赋和技能获取情况 新增addTalentRecord和addSkillRecord方法用于记录获取次数 修改getGameDate方法返回收集记录数据 在MissionCardComp中调用记录方法 新增MissionGetsComp组件文件 --- .../script/game/common/SingletonModuleComp.ts | 46 ++++++++++++++++++- assets/script/game/map/MissionCardComp.ts | 2 + assets/script/game/map/MissionGetsComp.ts | 29 ++++++++++++ .../script/game/map/MissionGetsComp.ts.meta | 9 ++++ 4 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 assets/script/game/map/MissionGetsComp.ts create mode 100644 assets/script/game/map/MissionGetsComp.ts.meta diff --git a/assets/script/game/common/SingletonModuleComp.ts b/assets/script/game/common/SingletonModuleComp.ts index d81f2cca..c5f88f93 100644 --- a/assets/script/game/common/SingletonModuleComp.ts +++ b/assets/script/game/common/SingletonModuleComp.ts @@ -17,7 +17,11 @@ import { getLevelExp } from "../map/RogueConfig"; interface GameDate{ gold:number, heros:any, - fight_hero:number + fight_hero:number, + collection?: { + talents: Record, + skills: Record + } } interface CloudData { openid: string; @@ -122,6 +126,11 @@ export class SingletonModuleComp extends ecs.Comp { tal:[], info:'', }, + // 收集记录 + collection: { + talents: {} as Record, + skills: {} as Record, + }, gold: 200, // 金币数据(MVVM绑定字段) }; @@ -158,6 +167,30 @@ export class SingletonModuleComp extends ecs.Comp { } } + /** + * 记录天赋获取 + * @param id 天赋ID + */ + addTalentRecord(id: number) { + if (!this.vmdata.collection.talents[id]) { + this.vmdata.collection.talents[id] = 0; + } + this.vmdata.collection.talents[id]++; + console.log(`[SMC] 记录天赋获取: ID=${id}, 次数=${this.vmdata.collection.talents[id]}`); + } + + /** + * 记录技能获取 + * @param id 技能ID + */ + addSkillRecord(id: number) { + if (!this.vmdata.collection.skills[id]) { + this.vmdata.collection.skills[id] = 0; + } + this.vmdata.collection.skills[id]++; + console.log(`[SMC] 记录技能获取: ID=${id}, 次数=${this.vmdata.collection.skills[id]}`); + } + vmAdd() { VM.add(this.vmdata, "data"); } @@ -226,6 +259,10 @@ export class SingletonModuleComp extends ecs.Comp { if(CloudData.data.gold) this.vmdata.gold=CloudData.data.gold if(CloudData.data.heros) this.heros=CloudData.data.heros if(CloudData.data.fight_hero) this.fight_hero=CloudData.data.fight_hero + // 恢复收集记录 + if(CloudData.data.collection) { + this.vmdata.collection = CloudData.data.collection; + } } } catch (error) { @@ -233,7 +270,12 @@ export class SingletonModuleComp extends ecs.Comp { } } getGameDate(){ - return {gold:this.vmdata.gold,heros:this.heros,fight_hero:this.fight_hero} + return { + gold:this.vmdata.gold, + heros:this.heros, + fight_hero:this.fight_hero, + collection: this.vmdata.collection + } } addHero(hero_uuid:number){ if(this.heros.indexOf(hero_uuid)==-1){ diff --git a/assets/script/game/map/MissionCardComp.ts b/assets/script/game/map/MissionCardComp.ts index fcf98e66..75f581c4 100644 --- a/assets/script/game/map/MissionCardComp.ts +++ b/assets/script/game/map/MissionCardComp.ts @@ -318,8 +318,10 @@ export class MissionCardComp extends CCComp { .call(() => { // 根据类型发送不同事件 if (this.curCardType === CardType.Talent) { + smc.addTalentRecord(selectedData.uuid); oops.message.dispatchEvent(GameEvent.UseTalentCard, selectedData.uuid); } else if (this.curCardType === CardType.Skill) { + smc.addSkillRecord(selectedData.uuid); oops.message.dispatchEvent(GameEvent.UseSkillCard, selectedData.uuid); } // 后续扩展其他类型事件 diff --git a/assets/script/game/map/MissionGetsComp.ts b/assets/script/game/map/MissionGetsComp.ts new file mode 100644 index 00000000..9d6ec7c0 --- /dev/null +++ b/assets/script/game/map/MissionGetsComp.ts @@ -0,0 +1,29 @@ +import { _decorator } from "cc"; +import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; +import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; + +const { ccclass, property } = _decorator; + +/** 视图层对象 */ +@ccclass('MissionGetsCompComp') +@ecs.register('MissionGetsComp', false) +export class MissionGetsCompComp extends CCComp { + /** 视图层逻辑代码分离演示 */ + start() { + // var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象 + // this.on(ModuleEvent.Cmd, this.onHandler, this); + } + + /** 全局消息逻辑处理 */ + // private onHandler(event: string, args: any) { + // switch (event) { + // case ModuleEvent.Cmd: + // break; + // } + // } + + /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ + reset() { + this.node.destroy(); + } +} \ No newline at end of file diff --git a/assets/script/game/map/MissionGetsComp.ts.meta b/assets/script/game/map/MissionGetsComp.ts.meta new file mode 100644 index 00000000..75200b04 --- /dev/null +++ b/assets/script/game/map/MissionGetsComp.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.24", + "importer": "typescript", + "imported": true, + "uuid": "a1707aae-7e2b-4360-b44b-a984f4a6d358", + "files": [], + "subMetas": {}, + "userData": {} +}