Files
heros/assets/script/game/damage/DamageComp.ts

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);
}
}