fix(equipBox): 修复装备盒点击预览逻辑

1. 移除冗余的跨卡池查找逻辑,改为仅从装备卡池查询装备配置
2. 新增isEquipCard参数区分装备卡和技能卡预览,优化HInfoComp的数据查询逻辑
3. 调整弹窗打开参数,简化装备盒点击的配置传递
This commit is contained in:
pan
2026-07-22 12:58:33 +08:00
parent fd056b4433
commit b647d68dde
2 changed files with 15 additions and 13 deletions

View File

@@ -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();