feat(hero-config): 新增英雄额外属性加成档位的图鉴展示支持

本次变更完成了英雄bonus属性加成系统的图鉴可视化改造:
1. 扩展LvBonusAttrsEntry类型,新增name/icon/info配置字段
2. 服务端渲染兼容新增字段,仅在配置存在时输出
3. 更新英雄配置文档,补充bonus字段的新参数说明
4. 新增属性加成编辑器表单,支持配置名称、图标和自定义描述
5. 实现英雄图鉴的bonus档位图标渲染逻辑,支持锁定状态和点击弹窗
6. 新增bonus效果文案生成工具,支持自定义模板和属性自动生成
7. 为技能弹窗新增bonus专属渲染逻辑,适配属性加成档位的展示
8. 为部分测试英雄配置了bonus档位的名称属性
This commit is contained in:
panFD
2026-09-07 23:58:44 +08:00
parent 771b0aad26
commit dbc013a20f
9 changed files with 183 additions and 19 deletions

View File

@@ -7,6 +7,7 @@ import { SkillSet, FieldSkillSet } from "../common/config/SkillSet";
import {
FieldEntry, HeroInfo, TriggerGrouped, SkillTriggerType,
getGroupedTriggerName, getFieldSkillName, getTriggerGroupName, getFieldGroupName, getHeroSkillIcon,
LvBonusAttrsEntry,
} from "../common/config/heroSet";
import { UIID } from "../common/config/GameUIConfig";
import { smc } from "../common/SingletonModuleComp";
@@ -63,6 +64,8 @@ export class SSkillBoxComp extends CCComp {
public field: FieldEntry[] = [];
/** 英雄图鉴模式下的图标来源:skill=SkillSet,field=FieldSkillSet;undefined 表示装备卡模式 */
private hero_icon_source?: "skill" | "field";
/** bonus 档位模式:该图标代表英雄额外属性加成的某一档(图鉴展示,无技能底座 uuid) */
private bonus_entry?: LvBonusAttrsEntry;
/** 点击事件是否已注册(防止重复绑定) */
private _clickRegistered: boolean = false;
@@ -79,6 +82,16 @@ export class SSkillBoxComp extends CCComp {
/** 点击:弹出技能信息框 */
private onClick() {
oops.audio.playEffect("music/button");
// bonus 档位模式:专属弹窗参数(无技能底座 uuid,直接透传档位数据)
if (this.bonus_entry) {
oops.gui.open(UIID.SInfo, {
uuid: 0,
skill_lv: 1,
hero_uuid: this.hero_uuid || undefined,
bonus_entry: this.bonus_entry,
});
return;
}
oops.gui.open(UIID.SInfo, {
uuid: this.s_uuid,
skill_lv: this.rarity,
@@ -108,6 +121,24 @@ export class SSkillBoxComp extends CCComp {
}
}
/**
* 初始化 bonus 档位图标(英雄图鉴面板专用):
* 图标/名称直接取档位配置的 icon/name,无技能底座 uuid;点击弹窗走 bonus 专属渲染。
* @param heroUuid 所属英雄 UUID(激活判定用局外等级)
* @param entry bonus 档位配置(含 lv/attrs/name/icon/info)
* @param locked 当前英雄等级未达档位解锁等级时显示锁定遮罩
*/
initBonus(heroUuid: number, entry: LvBonusAttrsEntry, locked: boolean) {
this.hero_uuid = heroUuid;
this.bonus_entry = entry;
// 等级标签展示解锁所需英雄等级(Lv.n),便于玩家直观看到解锁条件
this.rarity = entry.lv;
this.card_icon = entry.icon;
this.skill_name = entry.name ?? "";
this.updateUI();
this.setLocked(locked);
}
/**
* 初始化英雄技能图标(英雄图鉴面板专用):
* 图标按 s_uuid 直接取 SkillSet / FieldSkillSet 配置,不走 EquipPoolList。