refactor(英雄属性): 重构英雄升级逻辑并移除无用meta文件

将英雄升级逻辑从MissionComp迁移到HeroAttrsComp中集中处理
移除两个无用的TypeScript meta文件
This commit is contained in:
panw
2026-01-04 16:39:18 +08:00
parent 958a030075
commit 497d1f18d8
4 changed files with 50 additions and 27 deletions

View File

@@ -1,9 +0,0 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "c363af64-ebfd-4697-ad86-0afef53353f0",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -1,9 +0,0 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "c2a38591-59c8-44e4-b722-41dc6e8db0a1",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -1,4 +1,6 @@
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { GameEvent } from "../common/config/GameEvent";
import { Attrs, AttrsType, BType, NeAttrs } from "../common/config/HeroAttrs";
import { BuffConf } from "../common/config/SkillSet";
import { HeroInfo, AttrSet } from "../common/config/heroSet";
@@ -73,6 +75,54 @@ export class HeroAttrsComp extends ecs.Comp {
killed_count:number=0;
// 注意:技能数据已迁移到 HeroSkillsComp不再存储在这里
onLoad() {
// 监听升级事件
oops.message.on(GameEvent.CanUpdateLv, this.onLevelUp, this);
}
onDestroy() {
oops.message.off(GameEvent.CanUpdateLv, this.onLevelUp, this);
}
/**
* 处理英雄升级逻辑
*/
onLevelUp(event: string, args: any) {
// 只有主角才响应升级事件
if (!this.is_master) return;
const newLv = args.lv;
if (newLv > this.lv) {
console.log(`[HeroAttrs] 英雄升级处理: Lv.${this.lv} -> Lv.${newLv}`);
this.lv = newLv;
// === 属性成长逻辑 (示例: 固定数值成长) ===
const hpGrow = 10;
const apGrow = 2;
const defGrow = 1;
this.base_hp += hpGrow;
this.base_ap += apGrow;
this.base_def += defGrow;
// 重新计算受影响的属性
this.recalculateSingleAttr(Attrs.HP_MAX);
this.recalculateSingleAttr(Attrs.AP);
this.recalculateSingleAttr(Attrs.DEF);
// 升级福利:回复 20% 最大生命值
const healRatio = 0.2;
const healAmount = Math.floor(this.Attrs[Attrs.HP_MAX] * healRatio);
this.add_hp(healAmount, true);
// 同步数据到全局
smc.updateHeroInfo(this);
// 简单的UI提示
// oops.gui.toast(`升级HP+${hpGrow} AP+${apGrow}`);
}
}
start(){
}
// ==================== BUFF 系统初始化 ====================

View File

@@ -55,15 +55,6 @@ export class MissionComp extends CCComp {
onLevelUp(event: string, args: any) {
console.log(`[MissionComp] 英雄升级到 ${args.lv} 级!`);
// 同步等级到 ECS 组件,防止被 updateHeroInfo 覆盖回旧值
ecs.query(ecs.allOf(HeroAttrsComp)).forEach(e => {
const attrs = e.get(HeroAttrsComp);
if (attrs && attrs.is_master) {
attrs.lv = args.lv;
// 这里可以扩展:更新英雄属性,如 HP 上限等
}
});
// 触发奖励选择界面 (暂时留空)
this.showLevelUpReward();
}