18 lines
517 B
TypeScript
18 lines
517 B
TypeScript
export class CombatEvent {
|
|
static readonly type = 'CombatEvent';
|
|
constructor(
|
|
public readonly attacker: ecs.Entity,
|
|
public readonly target: ecs.Entity,
|
|
public readonly damage: number
|
|
) {}
|
|
}
|
|
|
|
// 事件监听示例
|
|
oops.message.on(CombatEvent.type, (event: CombatEvent) => {
|
|
const targetModel = event.target.get(HeroModel);
|
|
targetModel.hp = Math.max(targetModel.hp - event.damage, 0);
|
|
|
|
if (targetModel.hp <= 0) {
|
|
event.target.add(Status).setDead();
|
|
}
|
|
});
|