From fa670efbee061f367de35d9c368e88346eeb3eab Mon Sep 17 00:00:00 2001
From: Susan Yuen <susan_loves_cheese@hotmail.com>
Date: Fri, 4 Nov 2016 16:00:15 -0400
Subject: [PATCH] Fixed bug in movement

---
 .../Blaze_Brigade/GameFunction.cs             | 38 ++++++++++++++-----
 .../Blaze_Brigade/MouseHandler.cs             |  1 +
 src/Blaze-Brigade/Blaze_Brigade/Unit.cs       |  1 -
 src/Blaze-Brigade/Blaze_Brigade/Warrior.cs    | 25 ------------
 4 files changed, 29 insertions(+), 36 deletions(-)

diff --git a/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs b/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs
index 7d4b26b..3ce33d4 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs
@@ -11,11 +11,14 @@ namespace Controller
     // This class holds useable functions in the scope of the entire gameplay
     static class GameFunction
     {
-        // might not need; check if enemyUnitsInRange returns an empty list
-        public static bool isAnEnemyUnitInRange(Unit unit)
+        // returns whether an enemy unit is in range of the unit
+        public static bool isAnEnemyUnitInRange(Graph graph, Unit unit)
         {
-            // TODO
-            return false;
+            if (enemyUnitsInRange(graph, unit).Count == 0)
+            {
+                return false;
+            }
+            return true;
         }
 
         // returns whether or not the enemy unit is within attack range of unit
@@ -34,7 +37,11 @@ namespace Controller
                 Button[] buttons = unit.getButtons();
                 for (int i = 0; i < buttons.Count(); i++)
                 {
-                    buttons[i].setActive(true);
+                    if (buttons[i].getButtonType() != ButtonType.Attack
+                        || buttons[i].getButtonType() != ButtonType.AttackConfirm)
+                    {
+                        buttons[i].setActive(true);
+                    }
                 }
             }
 
@@ -47,12 +54,23 @@ namespace Controller
             GameState.beforeMove = true;
         }
 
-        // returns all enemy units in range of the specified unit
-        public static LinkedList<Unit> enemyUnitsInRange(Unit unit)
+        // returns all enemy units in strict attack range of the specified unit
+        public static LinkedList<Unit> enemyUnitsInRange(Graph graph, Unit unit)
         {
-            // TODO
-            //int range = unit.getEquippedWeapon().getRange();    // use this to determine all hitable squares
-            return null;
+            //TODO: int range = unit.getEquippedWeapon().getRange();    // use this to determine all hitable squares
+
+            LinkedList<Unit> enemyUnitsInRange = new LinkedList<Unit>();
+            LinkedList<Unit> allEnemyUnits = GameState.enemyPlayer.getUnits();
+
+            foreach (Unit enemyUnit in allEnemyUnits)
+            {
+                if (isEnemyUnitInRange(graph, unit, enemyUnit))
+                {
+                    enemyUnitsInRange.AddLast(enemyUnit);
+                }
+            }
+
+            return enemyUnitsInRange;
         }
 
         // checks if specified unit can perform actions
diff --git a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
index ebe7d76..ec686e9 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
@@ -83,6 +83,7 @@ namespace Controller
                             GameState.selectedUnit.getButtonOfType(ButtonType.Move).setActive(false);   // move button no longer active
                             updateUnitPosition(graph, mouseClickCoordinates, path);
                             GameState.beforeMove = false;
+                            turnState = TurnState.Wait;
                         }
                         else
                         {
diff --git a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
index 5a6eaaa..ced93d7 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
@@ -26,7 +26,6 @@ namespace Model
         void setEquippedWeapon(Weapon w);       // sets the unit's currently equipped weapon
         //void setEquipableWeapons(Weapon add);  // need to update the weapon array, put new weapon into it
         bool isButtonActive(ButtonType buttonType);     // indicates whether a button has already been previously selected or not
-        void setButtonActive(ButtonType buttonType, bool active);
         void setButtonCoordinates(Vector2 pixelCoordinates);    // sets the coordinates of menu buttons
         void animate(int direction);            // animate sprite walking the direction specified
         void setInitialStats();                 // sets initial unit stats upon creation
diff --git a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
index 3f1265b..819aada 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
@@ -146,31 +146,6 @@ namespace Model
             }
         }
 
-        public void setButtonActive(ButtonType buttonType, bool active)
-        {
-            switch (buttonType)
-            {
-                case ButtonType.Attack:
-                    buttons[0].setActive(active);
-                    return;
-                case ButtonType.Move:
-                    buttons[1].setActive(active);
-                    return;
-                case ButtonType.Items:
-                    buttons[2].setActive(active);
-                    return;
-                case ButtonType.Wait:
-                    buttons[3].setActive(active);
-                    return;
-                case ButtonType.AttackConfirm:
-                    buttons[4].setActive(active);
-                    return;
-
-                default:
-                    return;
-            }
-        }
-
         public Texture2D getCharInfo()
         {
             return charInfo;
-- 
GitLab