feat(hero): 添加英雄属性事件处理系统及组件
添加 HeroAttrEvent 组件用于存储属性变更事件队列 添加 HeroAttrEventSystem 系统用于处理属性变更事件并更新角色属性
This commit is contained in:
29
assets/script/game/hero/HeroAttrEvent.ts
Normal file
29
assets/script/game/hero/HeroAttrEvent.ts
Normal 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 = [];
|
||||
}
|
||||
|
||||
}
|
||||
9
assets/script/game/hero/HeroAttrEvent.ts.meta
Normal file
9
assets/script/game/hero/HeroAttrEvent.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "c363af64-ebfd-4697-ad86-0afef53353f0",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
61
assets/script/game/hero/HeroAttrEventSystem.ts
Normal file
61
assets/script/game/hero/HeroAttrEventSystem.ts
Normal 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 设计理念:
|
||||
* - System(HeroAttrEventSystem):处理属性更新事件
|
||||
*
|
||||
* 系统职责:
|
||||
* 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() {
|
||||
}
|
||||
}
|
||||
9
assets/script/game/hero/HeroAttrEventSystem.ts.meta
Normal file
9
assets/script/game/hero/HeroAttrEventSystem.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "c2a38591-59c8-44e4-b722-41dc6e8db0a1",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
Reference in New Issue
Block a user