48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { Vec3 } from "cc";
|
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
|
|
export enum DamageType {
|
|
Physical = 1,
|
|
Magic = 2,
|
|
True = 3
|
|
}
|
|
|
|
/** 伤害请求组件 */
|
|
@ecs.register('DamageRequest')
|
|
export class DamageRequest extends ecs.Comp {
|
|
source!: ecs.Entity; // 伤害来源
|
|
target!: ecs.Entity; // 伤害目标
|
|
baseValue!: number; // 基础伤害值
|
|
damageType: number = 1; // 伤害类型
|
|
canCrit: boolean = true; // 是否可暴击
|
|
ignoreDefense: boolean = false; // 是否忽略防御
|
|
delay: number = 0; // 新增延迟时间属性
|
|
|
|
reset() {
|
|
this.source = null!;
|
|
this.target = null!;
|
|
this.baseValue = 0;
|
|
this.damageType = 1;
|
|
this.canCrit = true;
|
|
this.ignoreDefense = false;
|
|
this.delay = 0;
|
|
}
|
|
}
|
|
|
|
/** 伤害结果组件 */
|
|
@ecs.register('DamageResult')
|
|
export class DamageResult extends ecs.Comp {
|
|
value: number = 0; // 伤害数值
|
|
isCrit: boolean = false; // 是否暴击
|
|
isDodged: boolean = false; // 是否闪避
|
|
delay: number = 0; // 显示延迟(秒)
|
|
position: Vec3 = new Vec3();// 显示位置
|
|
|
|
reset() {
|
|
this.value = 0;
|
|
this.isCrit = false;
|
|
this.isDodged = false;
|
|
this.delay = 0;
|
|
this.position.set(0, 0, 0);
|
|
}
|
|
}
|