Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. public autoAttack(enemy: Commander): void {
  2. interface IAtackerBestTargetTupple { attacker: Creature; bestTarget: Creature; }
  3. const attackerBestTargetTupple: IAtackerBestTargetTupple = [...this._army]
  4. .map((attackerCreature: Creature) =>
  5. ({ attacker: attackerCreature, bestTarget: attackerCreature.findBestTarget(enemy._army) }))
  6. .sort((tupleA: IAtackerBestTargetTupple, tupleB: IAtackerBestTargetTupple) =>
  7. (tupleA.bestTarget.healthPoints - tupleA.attacker.calculateActualDamage(tupleA.bestTarget))
  8. - (tupleB.bestTarget.healthPoints - tupleB.attacker.calculateActualDamage(tupleB.bestTarget)))
  9. .sort((tupleA: IAtackerBestTargetTupple, tupleB: IAtackerBestTargetTupple) =>
  10. tupleB.bestTarget.damage - tupleA.bestTarget.damage)
  11. .find((bestTuple: IAtackerBestTargetTupple) => bestTuple);
  12.  
  13. this.applyAttack(attackerBestTargetTupple.attacker,
  14. attackerBestTargetTupple.bestTarget,
  15. enemy._army);
  16. if (attackerBestTargetTupple.bestTarget.healthPoints === 0) {
  17. enemy._army = enemy._army
  18. .filter(creature => creature !== attackerBestTargetTupple.bestTarget);
  19. }
  20. }
  21.  
  22. public applyAttack(attacker: Creature, target: Creature, enemyArmy: Creature[]): void {
  23. attacker.attack(target);
  24. }
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement