50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { Timer } from "db://oops-framework/core/common/timer/Timer";
|
||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||
import { smc } from "../common/SingletonModuleComp";
|
||
import { Attrs } from "../common/config/HeroAttrs";
|
||
import { HeroUpSet } from "../common/config/heroSet";
|
||
import { HeroSkillsComp } from "./HeroSkills";
|
||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||
import { HeroAttrEvent } from "./HeroAttrEvent";
|
||
/**
|
||
* ==================== 英雄属性更新系统 ====================
|
||
*
|
||
* 按照 ECS 设计理念:
|
||
* - System(HeroAttrEventSystem):处理属性更新事件
|
||
*
|
||
* 系统职责:
|
||
* 1. 处理当角色收到attr变更事件时,更新角色属性,并处理动画展示
|
||
*/
|
||
@ecs.register('HeroAttrEventSystem')
|
||
export class HeroAttrEventSystem extends ecs.ComblockSystem
|
||
implements ecs.ISystemUpdate, ecs.IEntityEnterSystem {
|
||
|
||
filter(): ecs.IMatcher {
|
||
return ecs.allOf(HeroAttrsComp,HeroAttrEvent);
|
||
}
|
||
entityEnter(e: ecs.Entity): void {
|
||
if(!smc.mission.play || smc.mission.pause) return;
|
||
}
|
||
|
||
update(e: ecs.Entity): void {
|
||
if(!smc.mission.play || smc.mission.pause) return;
|
||
const model = e.get(HeroAttrsComp);
|
||
if (!model || model.is_dead) return;
|
||
const event = e.get(HeroAttrEvent);
|
||
if (!event) return;
|
||
// 移除事件组件(事件处理完成)
|
||
|
||
}
|
||
/**
|
||
* 启用调试模式(调试时使用)
|
||
*/
|
||
enableDebug() {
|
||
}
|
||
|
||
/**
|
||
* 禁用调试模式(正式运行)
|
||
*/
|
||
disableDebug() {
|
||
}
|
||
}
|