From b31cb877fe020a3cc12a8ef6ddf1243ea962f95e Mon Sep 17 00:00:00 2001 From: panFD Date: Sat, 15 Aug 2026 15:15:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor(debuff-icon):=20=E7=A7=BB=E5=8A=A8debu?= =?UTF-8?q?ff=E5=9B=BE=E6=A0=87=E9=85=8D=E7=BD=AE=E5=88=B0=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将HeroTopBarComp中的DEBUFF_ICON_MAP常量和相关枚举抽离到common/config/BuffSet中,实现两处代码共用一套debuff图标配置,同时清理冗余的旧代码 --- assets/script/game/common/config/BuffSet.ts | 27 +++++++++++++++++++++ assets/script/game/hero/HeroAtkSystem.ts | 2 +- assets/script/game/hero/HeroTopBarComp.ts | 11 +-------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/assets/script/game/common/config/BuffSet.ts b/assets/script/game/common/config/BuffSet.ts index 0c3a40a4..ef5f33c9 100644 --- a/assets/script/game/common/config/BuffSet.ts +++ b/assets/script/game/common/config/BuffSet.ts @@ -29,6 +29,33 @@ export interface BuffTickEffect { scale_by_ap_pct: number; // 按施法者 ap 缩放百分比,0=不吃加成 } +/** + * debuff 图标节点名枚举。 + * 取值即 prefab 节点名:top.prefab 的 top/debuff 容器 与 tooltip.prefab 的 loss_life/hp/debuff 容器 + * 下存在同名子节点(两处共用一套图标)。 + * 注意:LightningDamag 为 prefab 原始拼写(少个 e),勿"修正"。 + */ +export enum DebuffIcon { + AttackDebuff = "AttackDebuff", // 攻击类 debuff + IceDamage = "IceDamage", // 冰系伤害 + FireDamage = "FireDamage", // 火系伤害(灼烧) + LightningDamag = "LightningDamag", // 雷系伤害 + Penetration = "Penetration", // 穿透 + Stun = "Stun", // 击晕 + Poison = "Poison", // 中毒 +} + +/** + * buffId → debuff 图标映射。 + * 仅伤害类/控制类 debuff 需要图标;未映射的 buff 不显示。 + * 新增 debuff 时:1) BuffList 加配置 2) 此处加一行映射。 + */ +export const DEBUFF_ICON_MAP: Record = { + 7002: DebuffIcon.FireDamage, // 灼烧 + 7003: DebuffIcon.IceDamage, // 冰冻 + 7004: DebuffIcon.Stun, // 击晕 +}; + /** Buff 静态定义 */ export interface BuffConfig { id: number; diff --git a/assets/script/game/hero/HeroAtkSystem.ts b/assets/script/game/hero/HeroAtkSystem.ts index 01db23fa..ef9d4ecd 100644 --- a/assets/script/game/hero/HeroAtkSystem.ts +++ b/assets/script/game/hero/HeroAtkSystem.ts @@ -19,7 +19,7 @@ import { getMonsterGoldDrop } from "../map/RogueConfig"; import { MissionEconomy } from "../map/MissionEconomy"; import { MoveComp } from "./MoveComp"; import { buffManager, BuffApplyOverrides } from "./BuffManager"; -import { DEBUFF_ICON_MAP } from "./HeroTopBarComp"; +import { DEBUFF_ICON_MAP } from "../common/config/BuffSet"; /** 最终伤害数据接口 * 用于封装一次攻击计算的所有结果数据 diff --git a/assets/script/game/hero/HeroTopBarComp.ts b/assets/script/game/hero/HeroTopBarComp.ts index 5d867fdf..f36968cf 100644 --- a/assets/script/game/hero/HeroTopBarComp.ts +++ b/assets/script/game/hero/HeroTopBarComp.ts @@ -3,7 +3,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { HeroAttrsComp } from "./HeroAttrsComp"; import { BuffComp } from "./BuffComp"; -import { BuffList, BuffCategory } from "../common/config/BuffSet"; +import { BuffList, BuffCategory, DEBUFF_ICON_MAP } from "../common/config/BuffSet"; import { FacSet, FightSet } from "../common/config/GameSet"; const { ccclass, property } = _decorator; @@ -20,15 +20,6 @@ const { ccclass, property } = _decorator; * 数据流:HeroViewComp 将 HeroAttrsComp 引用传入,本组件通过 model 读取属性。 * 注意:英雄根节点下的 "shielded" 是护盾特效动画节点,由 HeroViewComp 管理,不在本组件职责内。 */ -/** - * buffId → debuff 图标节点名映射(节点名为 top.prefab / tooltip.prefab debuff 容器下的子节点名,两处同名)。 - * 仅伤害类 debuff 需要图标;未映射的 buff 不显示。 - * 导出供 HeroTopBarComp(头顶 debuff 栏)与 HeroAtkSystem(DoT 飘字图标)共用。 - */ -export const DEBUFF_ICON_MAP: Record = { - 7002: "FireDamage", // 灼烧 -}; - @ccclass('HeroTopBarComp') @ecs.register('HeroTopBar', false) export class HeroTopBarComp extends CCComp {