From 30a2d67036412ecb5f3ba08ef6fcaeebc7b346af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= <jeremy@asynk.ch>
Date: Wed, 18 Feb 2015 12:00:27 +0100
Subject: Board,Map: add attack(Pawn, Pawn, boolean) to recompute and validate
 attack

---
 core/src/ch/asynk/tankontank/engine/Board.java | 6 ++++++
 core/src/ch/asynk/tankontank/game/Map.java     | 1 +
 2 files changed, 7 insertions(+)

diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java
index b8aead6..a097454 100644
--- a/core/src/ch/asynk/tankontank/engine/Board.java
+++ b/core/src/ch/asynk/tankontank/engine/Board.java
@@ -465,6 +465,12 @@ public abstract class Board implements Disposable, Animation
         pawn.revertLastMove();
     }
 
+    public void attack(final Pawn pawn, final Pawn target, boolean clearVisibility)
+    {
+        if (!pawn.canEngage(target) || !searchBoard.canAttack(pawn, target, clearVisibility))
+            throw new RuntimeException(String.format("%s cannot attack %s", pawn, target));
+    }
+
     public Tile getTileAt(float mx, float my)
     {
         // compute row
diff --git a/core/src/ch/asynk/tankontank/game/Map.java b/core/src/ch/asynk/tankontank/game/Map.java
index 2ef7749..b3b1ed3 100644
--- a/core/src/ch/asynk/tankontank/game/Map.java
+++ b/core/src/ch/asynk/tankontank/game/Map.java
@@ -544,6 +544,7 @@ public abstract class Map extends Board implements MoveToAnimationCb, ObjectiveS
 
     public boolean engageUnit(Unit unit, final Unit target)
     {
+        attack(unit, target, true);
 
         boolean success = resolveFight(unit, target, engagement);
 
-- 
cgit v1.1-2-g2b99