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

@@ -22,7 +22,7 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { oops } from "db://oops-framework/core/Oops";
import { mLogger } from "../common/Logger";
import { HeroInfo, HeroList, SkillTriggerType, LvFieldEntry, LvTriggerEntry, TriggerGrouped, HSkillInfo, getHeroDisplayStats } from "../common/config/heroSet";
import { HeroInfo, HeroList, SkillTriggerType, LvFieldEntry, LvTriggerEntry, TriggerGrouped, HSkillInfo, getHeroDisplayStats, LvBonusAttrsEntry } from "../common/config/heroSet";
import { buildHeroSkillDesc } from "../common/HeroSkillText";
import { GameEvent } from "../common/config/GameEvent";
import { HERO_UPGRADE_NEED_FRAGMENTS, RARITY_BG_COLORS } from "../common/config/GameSet";
@@ -537,6 +537,26 @@ export class HerosListComp extends CCComp {
this.addTriggerGroupIcon(hero[type] as TriggerGrouped | undefined, lv, type)
}
}
// ---- bonus 档位:配置了 icon 的档位在技能列表最末各出一个图标 ----
this.addBonusIcons(hero.bonus, lv)
}
/**
* bonus 档位图标:配置了 icon 的档位各出一个图标(追加在技能列表最末)。
* 激活判定:英雄局外等级 ≥ 档位 lv;未激活显示锁定遮罩。
* 点击弹窗走 SinfoComp bonus 专属渲染(名称/图标取档位配置,主说明为 attrs 效果)。
*/
private addBonusIcons(bonus: LvBonusAttrsEntry[] | undefined, lv: number) {
if (!bonus?.length) return
for (const entry of bonus) {
if (!entry.icon) continue
const node = instantiate(this.skill_icon_prefab)
node.name = `bonus_lv${entry.lv}`
const comp = node.getComponent(SSkillBoxComp) || node.addComponent(SSkillBoxComp)
comp.initBonus(this.huuid, entry, lv < entry.lv)
this.skills_node.addChild(node)
}
}
/**