refactor(skill): 重构技能触发逻辑,提取统一工具类

将分散在Hero、Mon、HeroAtkSystem、SCastSystem、MissionComp中的技能触发代码统一封装,集中处理触发次数加成、实体合法性校验与技能事件派发,同时新增SkillTriggerType枚举统一管理技能触发类型,简化业务调用并消除重复模板代码。
This commit is contained in:
panw
2026-05-21 11:10:27 +08:00
parent 3bfdf1639b
commit fc3f4d7375
8 changed files with 192 additions and 90 deletions

View File

@@ -8,7 +8,8 @@ import { HeroAttrsComp } from "./HeroAttrsComp";
import { HeroViewComp } from "./HeroViewComp";
import { MoveComp } from "./MoveComp";
import { MonMoveComp } from "./MonMoveComp";
import { GameEvent } from "../common/config/GameEvent";
import { GameEvent, SkillTriggerType } from "../common/config/GameEvent";
import { SkillTriggerHelper } from "./SkillTriggerHelper";
/** 怪物实体:负责怪物对象池复用、属性初始化、入场动画与回收 */
@ecs.register(`Monster`)
export class Monster extends ecs.Entity {
@@ -232,16 +233,7 @@ export class Monster extends ecs.Entity {
}
// 落地后触发 call 技能
if (model.call && model.call.length > 0) {
model.call.forEach((uuid: number) => {
oops.message.dispatchEvent(GameEvent.TriggerSkill, {
s_uuid: uuid,
heroAttrs: model,
heroView: view,
triggerType: 'call'
});
});
}
SkillTriggerHelper.trigger(SkillTriggerType.Call, model, view);
})
.start();
// 维护关卡内怪物数量统计