This commit is contained in:
walkpan
2025-02-01 00:14:25 +08:00
parent c5c01c6cf4
commit bffbb9077e
91 changed files with 2067 additions and 1327 deletions

View File

@@ -0,0 +1,41 @@
@ecs.registerSystem()
export class CombatSystem extends ecs.System {
filter(): ecs.IMatcher {
return ecs.allOf(Combat, HeroModel);
}
update(entities: ecs.Entity[]) {
entities.forEach(attacker => {
if (attacker.has(HeroModel)) {
this.processHeroAttack(attacker);
}
});
}
private processHeroAttack(attacker: ecs.Entity) {
const combat = attacker.get(Combat);
const model = attacker.get(HeroModel);
if (combat.target && model.hp > 0) {
// 攻击逻辑
combat.attackTimer += this.dt;
if (combat.attackTimer >= combat.attackInterval) {
this.executeAttack(attacker, combat.target);
combat.attackTimer = 0;
}
}
}
private executeAttack(attacker: ecs.Entity, target: ecs.Entity) {
// 伤害计算逻辑
const attack = attacker.get(HeroModel).attack;
const defense = target.get(HeroModel).defense;
const damage = Math.max(attack - defense, 1);
oops.message.dispatch('CombatEvent', {
attacker,
target,
damage
});
}
}