From b647d68dde84f9db81ddf3193dcadec270a8c157 Mon Sep 17 00:00:00 2001 From: pan Date: Wed, 22 Jul 2026 12:58:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(equipBox):=20=E4=BF=AE=E5=A4=8D=E8=A3=85?= =?UTF-8?q?=E5=A4=87=E7=9B=92=E7=82=B9=E5=87=BB=E9=A2=84=E8=A7=88=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 移除冗余的跨卡池查找逻辑,改为仅从装备卡池查询装备配置 2. 新增isEquipCard参数区分装备卡和技能卡预览,优化HInfoComp的数据查询逻辑 3. 调整弹窗打开参数,简化装备盒点击的配置传递 --- assets/script/game/map/EquipBoxComp.ts | 13 ++++--------- assets/script/game/map/HInfoComp.ts | 15 +++++++++++---- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/assets/script/game/map/EquipBoxComp.ts b/assets/script/game/map/EquipBoxComp.ts index 98e6e05f..93fb670b 100644 --- a/assets/script/game/map/EquipBoxComp.ts +++ b/assets/script/game/map/EquipBoxComp.ts @@ -24,7 +24,7 @@ * - 销毁时通过 GameEvent.RemoveSkillBox 通知 MissSkillsComp 回收槽位 * * 依赖: - * - CardPoolList / CardTriggerType(CardSet)—— 通用卡牌类型定义 + * - CardTriggerType(CardSet)—— 卡牌触发类型定义 * - EquipPoolList(EquipSet)—— 装备卡池配置(查询触发配置) * - SkillSet —— 技能静态配置(icon 字段) * - GameEvent —— 各类游戏事件 @@ -34,7 +34,7 @@ import { mLogger } from "../common/Logger"; import { _decorator, Node, Prefab, Sprite, Label, Vec3, resources, SpriteAtlas, tween, v3, Tween, NodeEventType } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; -import { CardPoolList, CardTriggerType } from "../common/config/CardSet"; +import { CardTriggerType } from "../common/config/CardSet"; import { EquipPoolList } from "../common/config/EquipSet"; import { SkillSet, SkillOverrides, FieldSkillSet } from "../common/config/SkillSet"; import { oops } from "db://oops-framework/core/Oops"; @@ -150,14 +150,9 @@ export class EquipBoxComp extends CCComp { private onNodeClicked() { if (!this.initialized) return; oops.audio.playEffect("music/button"); - // 点击时弹出 HInfoComp,传入卡牌 UUID 和等级以启用预览模式 - // 优先从装备卡池查找,找不到再从技能卡池查找 - const config = EquipPoolList.find(c => c.uuid === this.s_uuid || c.skill === this.s_uuid) - ?? CardPoolList.find(c => c.uuid === this.s_uuid || c.skill === this.s_uuid); - const cardUuid = config ? config.uuid : this.s_uuid; - + // 点击装备盒弹出 HInfoComp,从 EquipPoolList 查询配置 oops.gui.remove(UIID.HInfo); - oops.gui.open(UIID.HInfo, { heroUuid: cardUuid, heroLv: this.card_lv, poolLv: config?.pool_lv ?? 1, isSkillCard: true }); + oops.gui.open(UIID.HInfo, { heroUuid: this.s_uuid, heroLv: this.card_lv, poolLv: 1, isSkillCard: true, isEquipCard: true }); } /** diff --git a/assets/script/game/map/HInfoComp.ts b/assets/script/game/map/HInfoComp.ts index c59d8bf5..9ec7e1c4 100644 --- a/assets/script/game/map/HInfoComp.ts +++ b/assets/script/game/map/HInfoComp.ts @@ -36,6 +36,7 @@ import { MissionHeroComp } from "./MissionHeroComp"; import { MoveComp } from "../hero/MoveComp"; import { FacSet, getLvColor } from "../common/config/GameSet"; import { CKind, CardPoolList, CardConfig, CardTriggerType } from "../common/config/CardSet"; +import { EquipPoolList } from "../common/config/EquipSet"; import { SkillSet } from "../common/config/SkillSet"; import { CardBgComp } from "./CardBgComp"; import { MissionEconomy } from "./MissionEconomy"; @@ -100,6 +101,8 @@ export class HInfoComp extends CCComp { private previewLv: number = 1; private previewPoolLv: number = 1; private isSkillCard: boolean = false; + /** 是否为装备卡预览(决定从 EquipPoolList 查询配置) */ + private isEquipCard: boolean = false; /** 英雄名字标签缓存引用 */ private nameLabel: Label | null = null; /** 技能信息标签缓存引用 */ @@ -126,9 +129,9 @@ export class HInfoComp extends CCComp { this.bindEvents(); } - onAdded(args: { eid?: number; heroUuid?: number; heroLv?: number; poolLv?: number; isSkillCard?: boolean }) { + onAdded(args: { eid?: number; heroUuid?: number; heroLv?: number; poolLv?: number; isSkillCard?: boolean, isEquipCard?: boolean }) { if (args?.heroUuid) { - this.bindPreviewData(args.heroUuid, args.heroLv ?? 1, args.poolLv ?? 1, args.isSkillCard ?? false); + this.bindPreviewData(args.heroUuid, args.heroLv ?? 1, args.poolLv ?? 1, args.isSkillCard ?? false, args.isEquipCard ?? false); return; } const eid = args?.eid ?? 0; @@ -182,7 +185,10 @@ export class HInfoComp extends CCComp { if (this.icon_node) this.icon_node.active = false; if (this.skill_icon_node) this.skill_icon_node.active = true; - const config = CardPoolList.find(c => c.uuid === heroUuid); + // 根据来源从对应卡池查询配置 + const config = this.isEquipCard + ? EquipPoolList.find(c => c.uuid === heroUuid) + : CardPoolList.find(c => c.uuid === heroUuid); if (!config) return; if (this.nameLabel) this.nameLabel.string = config.name ?? ""; @@ -285,12 +291,13 @@ export class HInfoComp extends CCComp { * 绑定静态预览数据(卡牌点击查看)。 * 通过 HeroInfo/CardPoolList 配置 × 等级计算初始值,不绑定 ECS 实体。 */ - bindPreviewData(heroUuid: number, heroLv: number, poolLv: number, isSkillCard: boolean = false) { + bindPreviewData(heroUuid: number, heroLv: number, poolLv: number, isSkillCard: boolean = false, isEquipCard: boolean = false) { this.isPreview = true; this.previewUuid = heroUuid; this.previewLv = heroLv; this.previewPoolLv = poolLv; this.isSkillCard = isSkillCard; + this.isEquipCard = isEquipCard; if (this.sell_node) this.sell_node.active = false; if (this.close_node) this.close_node.active = true; this.cacheLabels();