feat(hero): 添加英雄属性事件处理系统及组件

添加 HeroAttrEvent 组件用于存储属性变更事件队列
添加 HeroAttrEventSystem 系统用于处理属性变更事件并更新角色属性
This commit is contained in:
panw
2025-12-31 10:56:42 +08:00
parent 9d17707c3b
commit 707f8ab1cb
4 changed files with 108 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { Attrs } from "../common/config/HeroAttrs";
/**
* ==================== 伤害事件数据 ====================
*
* 单个伤害事件的数据结构
*/
export interface AttrEvent {
/** 伤害属性数据 */
Attr: Attrs;
Value:number;
}
/**
* ==================== 伤害队列组件 ====================
*
* 用途:
*/
@ecs.register('HeroAttrEvent')
export class HeroAttrEvent extends ecs.Comp {
/** 伤害事件队列 */
AttrEvent: AttrEvent[] = [];
reset() {
this.AttrEvent = [];
}
}

View File

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

View File

@@ -0,0 +1,61 @@
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 设计理念:
* - SystemHeroAttrEventSystem处理属性更新事件
*
* 系统职责:
* 1. 处理当角色收到attr变更事件时更新角色属性并处理动画展示
*
/**
* 使用方式:
* 在 RootSystem 中注册此系统,它会自动每帧更新所有拥有 HeroAttrsComp 的实体
*/
@ecs.register('HeroAttrEventSystem')
export class HeroAttrEventSystem extends ecs.ComblockSystem
implements ecs.IEntityEnterSystem {
/**
* 过滤器:只处理拥有 HeroAttrsComp 的实体
*/
filter(): ecs.IMatcher {
return ecs.allOf(HeroAttrsComp,HeroAttrEvent);
}
/**
* 实体首次进入系统时调用(每个实体只调用一次)
*/
entityEnter(e: ecs.Entity): void {
if(!smc.mission.play || smc.mission.pause) return;
}
/**
* 系统首次更新前调用(整个系统只调用一次)
*/
firstUpdate(): void {
console.log("[HeroAttrEventSystem] 系统首次更新");
}
/**
* 启用调试模式(调试时使用)
*/
enableDebug() {
}
/**
* 禁用调试模式(正式运行)
*/
disableDebug() {
}
}

View File

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