From 1cfd74062d731579643da4b29720f9daf2046007 Mon Sep 17 00:00:00 2001 From: walkpan Date: Mon, 5 Jan 2026 19:25:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=A5=BD=E5=8F=8B=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A5=BD=E5=8F=8B=E5=8F=AC=E5=94=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=8F=8A=E7=9B=B8=E5=85=B3=E4=BA=8B=E4=BB=B6=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在GameEvent枚举中添加ToCallFriend和CallFriend事件 - 在MissionHeroComp中添加好友召唤事件处理 - 在SingletonModuleComp中添加好友记录功能 - 更新icon.prefab界面以支持好友功能 --- assets/resources/gui/uis/bgs/icon.prefab | 246 +++++++++++++++++- .../script/game/common/SingletonModuleComp.ts | 29 ++- assets/script/game/common/config/GameEvent.ts | 2 + assets/script/game/map/MissionHeroComp.ts | 6 +- 4 files changed, 267 insertions(+), 16 deletions(-) diff --git a/assets/resources/gui/uis/bgs/icon.prefab b/assets/resources/gui/uis/bgs/icon.prefab index 5373a910..f6e8cb9b 100644 --- a/assets/resources/gui/uis/bgs/icon.prefab +++ b/assets/resources/gui/uis/bgs/icon.prefab @@ -26,19 +26,25 @@ }, { "__id__": 18 + }, + { + "__id__": 26 } ], "_active": true, "_components": [ { - "__id__": 26 + "__id__": 32 }, { - "__id__": 28 + "__id__": 34 + }, + { + "__id__": 36 } ], "_prefab": { - "__id__": 30 + "__id__": 39 }, "_lpos": { "__type__": "cc.Vec3", @@ -594,6 +600,165 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, + { + "__type__": "cc.Node", + "_name": "num", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 27 + }, + { + "__id__": 29 + } + ], + "_prefab": { + "__id__": 31 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 34.381, + "y": -27.61, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 26 + }, + "_enabled": true, + "__prefab": { + "__id__": 28 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 17.90380859375, + "height": 54.4 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "bamuO27s5EHZhw2oKWl9jA" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 26 + }, + "_enabled": true, + "__prefab": { + "__id__": 30 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "1", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 25, + "_fontSize": 25, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 0, + "_enableWrapText": true, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": true, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": true, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "91xb7dj5dBpoFxB6oNzuAs" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e0FG6b1MdParpWO5Eh10eo", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, { "__type__": "cc.UITransform", "_name": "", @@ -604,7 +769,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 27 + "__id__": 33 }, "_contentSize": { "__type__": "cc.Size", @@ -632,7 +797,7 @@ }, "_enabled": false, "__prefab": { - "__id__": 29 + "__id__": 35 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -667,6 +832,74 @@ "__type__": "cc.CompPrefabInfo", "fileId": "d43zVnYtNEa7gnqhcV0LD4" }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 37 + }, + "clickEvents": [ + { + "__id__": 38 + } + ], + "_interactable": true, + "_transition": 0, + "_normalColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_hoverColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_pressedColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_normalSprite": null, + "_hoverSprite": null, + "_pressedSprite": null, + "_disabledSprite": null, + "_duration": 0.1, + "_zoomScale": 1.2, + "_target": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "94UHGas6VLi6OBaZrrGpOX" + }, + { + "__type__": "cc.ClickEvent", + "target": null, + "component": "", + "_componentId": "", + "handler": "", + "customEventData": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -676,7 +909,6 @@ "__id__": 0 }, "fileId": "23znkFS6BDwoO5cjQxIEur", - "instance": null, - "targetOverrides": null + "instance": null } ] \ No newline at end of file diff --git a/assets/script/game/common/SingletonModuleComp.ts b/assets/script/game/common/SingletonModuleComp.ts index c5f88f93..684b1d44 100644 --- a/assets/script/game/common/SingletonModuleComp.ts +++ b/assets/script/game/common/SingletonModuleComp.ts @@ -8,7 +8,7 @@ import { GameEvent } from "./config/GameEvent"; import * as exp from "constants"; import { HeroAttrsComp } from "../hero/HeroAttrsComp"; import { Attrs, GameScoreStats } from "./config/HeroAttrs"; -import { time } from "console"; +import { count, time } from "console"; import { getLevelExp } from "../map/RogueConfig"; /** * 用远程数据覆盖本地数据(统一方法) @@ -20,7 +20,8 @@ interface GameDate{ fight_hero:number, collection?: { talents: Record, - skills: Record + skills: {uuid:0,count:0}, + friend:{uuid:0,count:0}, } } interface CloudData { @@ -129,7 +130,8 @@ export class SingletonModuleComp extends ecs.Comp { // 收集记录 collection: { talents: {} as Record, - skills: {} as Record, + skill: {uuid:0,count:0}, + friend:{uuid:0,count:0}, }, gold: 200, // 金币数据(MVVM绑定字段) }; @@ -184,13 +186,24 @@ export class SingletonModuleComp extends ecs.Comp { * @param id 技能ID */ addSkillRecord(id: number) { - if (!this.vmdata.collection.skills[id]) { - this.vmdata.collection.skills[id] = 0; + if (!this.vmdata.collection.skill.uuid) { + this.vmdata.collection.skill.uuid = id; } - this.vmdata.collection.skills[id]++; - console.log(`[SMC] 记录技能获取: ID=${id}, 次数=${this.vmdata.collection.skills[id]}`); + this.vmdata.collection.skill.count++; + console.log(`[SMC] 记录技能获取: ID=${id}, 次数=${this.vmdata.collection.skill.count}`); } - + /** + * 记录好友获取 + * @param id 好友ID + */ + addFriendHero(id: number) { + if (!this.vmdata.collection.friend.uuid) { + this.vmdata.collection.friend.uuid = id; + } + this.vmdata.collection.friend.count++; + console.log(`[SMC] 记录好友获取: ID=${id}, 次数=${this.vmdata.collection.friend.count}`); + } + vmAdd() { VM.add(this.vmdata, "data"); } diff --git a/assets/script/game/common/config/GameEvent.ts b/assets/script/game/common/config/GameEvent.ts index c2570a68..52ba3cb2 100644 --- a/assets/script/game/common/config/GameEvent.ts +++ b/assets/script/game/common/config/GameEvent.ts @@ -65,4 +65,6 @@ export enum GameEvent { DIAMOND_UPDATE = "DIAMOND_UPDATE", MEAT_UPDATE = "MEAT_UPDATE", ReviveSuccess = "ReviveSuccess", + ToCallFriend = "ToCallFriend", + CallFriend = "CallFriend", } \ No newline at end of file diff --git a/assets/script/game/map/MissionHeroComp.ts b/assets/script/game/map/MissionHeroComp.ts index c6f7904c..c06137ff 100644 --- a/assets/script/game/map/MissionHeroComp.ts +++ b/assets/script/game/map/MissionHeroComp.ts @@ -21,6 +21,7 @@ export class MissionHeroCompComp extends CCComp { this.on(GameEvent.FightReady,this.fight_ready,this) this.on(GameEvent.Zhaohuan,this.zhao_huan,this) this.on(GameEvent.MissionEnd,this.clear_heros,this) + this.on(GameEvent.CallFriend,this.call_friend,this) } start() { // this.test_call() @@ -60,7 +61,10 @@ export class MissionHeroCompComp extends CCComp { // console.log("[MissionHeroComp]:zhaohuan",args) this.addHero(args.uuid,false) } - + private call_friend(event: string, args: any){ + // console.log("[MissionHeroComp]:call_friend",args) + this.addHero(args.uuid,false) + } /** 添加英雄 */ private addHero(uuid:number=1001,is_master:boolean=false) { // console.log("[MissionHeroComp]:addHero",uuid,is_zhaohuan)