feat(hero skill): add slot support for hero skill detail panel
1. 新增技能槽位参数,解决同底座技能(如普攻+触发技能)的分档定位问题 2. 新增2级/3级面板节点配置,自动隐藏无对应档位的面板 3. 重构英雄技能档位生成逻辑,支持按槽位精确查找技能配置 4. 优化技能弹窗渲染逻辑,传递槽位参数避免匹配错误分组
This commit is contained in:
@@ -46,6 +46,9 @@ export class SSkillBoxComp extends CCComp {
|
||||
private s_uuid: number = 0;
|
||||
/** 所属英雄 UUID(英雄图鉴模式,>0 时点击弹窗走英雄技能分档描述) */
|
||||
private hero_uuid: number = 0;
|
||||
/** 技能所属槽位(英雄图鉴模式):同一底座可同时为普攻与触发技能(如 5002 的 6004),
|
||||
* 弹窗按槽位精确取档,避免自动定位命中错误分组 */
|
||||
private hero_slot?: SkillTriggerType;
|
||||
/** 卡牌等级 */
|
||||
private card_lv: number = 1;
|
||||
/** 卡牌自定义图标ID(优先级最高,未定义则按 trigger_type 自动取) */
|
||||
@@ -83,6 +86,8 @@ export class SSkillBoxComp extends CCComp {
|
||||
trigger_type: this.trigger_type,
|
||||
// 英雄图鉴模式:携带所属英雄,弹窗按英雄技能分档描述渲染
|
||||
hero_uuid: this.hero_uuid || undefined,
|
||||
// 槽位:同一底座不同槽位视为不同技能(激活等级/档位各自独立)
|
||||
hero_slot: this.hero_uuid ? this.hero_slot : undefined,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -105,10 +110,12 @@ export class SSkillBoxComp extends CCComp {
|
||||
* @param locked 当前等级未激活时显示锁定遮罩
|
||||
* @param isField true 时图标取 FieldSkillSet(驻场光环词条)
|
||||
* @param heroUuid 所属英雄 UUID(点击弹窗按英雄技能分档描述渲染)
|
||||
* @param slot 技能所属槽位(普攻/大招传 undefined;触发/光环/复活传对应类型)
|
||||
*/
|
||||
initHeroSkill(s_uuid: number, s_lv: number, locked: boolean, isField: boolean = false, heroUuid: number = 0) {
|
||||
initHeroSkill(s_uuid: number, s_lv: number, locked: boolean, isField: boolean = false, heroUuid: number = 0, slot?: SkillTriggerType) {
|
||||
this.s_uuid = s_uuid;
|
||||
this.hero_uuid = heroUuid;
|
||||
this.hero_slot = slot;
|
||||
this.card_lv = s_lv;
|
||||
this.hero_icon_source = isField ? "field" : "skill";
|
||||
this.updateUI();
|
||||
@@ -182,11 +189,24 @@ export class SSkillBoxComp extends CCComp {
|
||||
/**
|
||||
* 英雄图鉴模式:按技能 uuid 在英雄配置中定位,取英雄语境展示名。
|
||||
* 覆盖普攻/大招(skills)、5 类触发技能、驻场光环(field)、复活(revive)。
|
||||
* 指定槽位时仅在对应槽位查找(同一底座可同时是普攻与触发技能,需精确区分);
|
||||
* 未命中返回空串,由调用方回退底座名。
|
||||
*/
|
||||
private resolveHeroSkillName(): string {
|
||||
const hero = HeroInfo[this.hero_uuid];
|
||||
if (!hero) return "";
|
||||
// 槽位指定:光环/复活/触发组各自取值,未命中直接回退
|
||||
if (this.hero_slot !== undefined) {
|
||||
if (this.hero_slot === SkillTriggerType.Field) {
|
||||
return getFieldSkillName(hero, this.s_uuid);
|
||||
}
|
||||
if (this.hero_slot === SkillTriggerType.Revive) {
|
||||
return getReviveSkillName(hero, this.s_uuid);
|
||||
}
|
||||
const grouped = hero[this.hero_slot] as TriggerGrouped | undefined;
|
||||
if (grouped?.[this.s_uuid]?.length) return getGroupedTriggerName(grouped, this.s_uuid);
|
||||
return "";
|
||||
}
|
||||
// 普攻/大招
|
||||
const hSkill = hero.skills?.[this.s_uuid];
|
||||
if (hSkill?.name) return hSkill.name;
|
||||
|
||||
Reference in New Issue
Block a user