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