From 547f253d1a7d353547323c3df72f2f6a5c84cc52 Mon Sep 17 00:00:00 2001
From: trandit <trandit@mcmaster.ca>
Date: Thu, 3 Nov 2016 20:19:08 -0400
Subject: [PATCH] Added another mainMenu state - attackConfirm. Added dif
 directions for attacking. NOw detects what unit is being attacked. WORK IN
 PROGRESS

---
 src/Blaze-Brigade/Blaze_Brigade/GameState.cs  |  1 +
 src/Blaze-Brigade/Blaze_Brigade/MenuButton.cs |  1 +
 .../Blaze_Brigade/MouseHandler.cs             | 74 +++++++++++++++++--
 src/Blaze-Brigade/Blaze_Brigade/Unit.cs       |  1 +
 src/Blaze-Brigade/Blaze_Brigade/Warrior.cs    |  5 ++
 5 files changed, 77 insertions(+), 5 deletions(-)

diff --git a/src/Blaze-Brigade/Blaze_Brigade/GameState.cs b/src/Blaze-Brigade/Blaze_Brigade/GameState.cs
index 3e7bbe9..4347d49 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/GameState.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/GameState.cs
@@ -37,6 +37,7 @@ namespace Model
     enum TurnState //what the current turn state is (per unit)
     {
         Wait,
+        AttackMenu,
         Attack,
         Move,
         Items
diff --git a/src/Blaze-Brigade/Blaze_Brigade/MenuButton.cs b/src/Blaze-Brigade/Blaze_Brigade/MenuButton.cs
index aabed92..7905d35 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/MenuButton.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/MenuButton.cs
@@ -60,6 +60,7 @@ namespace View
     enum MenuButtonType
     {
         Attack,
+        AttackConfirm,
         Move,
         Items,
         Wait
diff --git a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
index 5426a46..9254998 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs
@@ -92,6 +92,8 @@ namespace Controller
                             attackAnimation(graph, 0);
                         
                         //GameState.dropDownMenuOpen = (true);
+
+                        
                     }
                     }
                 }
@@ -169,10 +171,10 @@ namespace Controller
             GameState.isAnimating = true;
             float originalLocationX = unit.PixelCoordinates.X;
             float originalLocationY = unit.PixelCoordinates.Y;
-
-            if (direction == 0)
+            #region Attack Right
+            if (direction == 0) //attack right
             {
-                for(float i = originalLocationX; i <= originalLocationX+8; i++)
+                for (float i = originalLocationX; i <= originalLocationX + 8; i++)
                 {
                     unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X + 1, unit.PixelCoordinates.Y);
                     Game.Instance.Tick();
@@ -186,6 +188,61 @@ namespace Controller
                     Thread.Sleep(10);
                 }
             }
+            #endregion
+            #region Attack Left
+            else if (direction == 1) //attack left
+            {
+                for (float i = originalLocationX; i >= originalLocationX - 8; i--)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X + 1, unit.PixelCoordinates.Y);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+
+                for (float i = unit.PixelCoordinates.X; i <= originalLocationX; i++)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X - 1, unit.PixelCoordinates.Y);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+            }
+            #endregion
+            #region Attack Up
+            else if (direction == 2) //attack up
+            {
+                for (float i = originalLocationY; i >= originalLocationY - 8; i--)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X , unit.PixelCoordinates.Y +1);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+
+                for (float i = unit.PixelCoordinates.X; i <= originalLocationX; i++)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X , unit.PixelCoordinates.Y - 1);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+            }
+            #endregion
+            #region Attack Down
+            else if (direction == 3) //attack down
+            {
+                for (float i = originalLocationY; i >= originalLocationY - 8; i--)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X, unit.PixelCoordinates.Y + 1);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+
+                for (float i = unit.PixelCoordinates.X; i <= originalLocationX; i++)
+                {
+                    unit.PixelCoordinates = new Vector2(unit.PixelCoordinates.X, unit.PixelCoordinates.Y - 1);
+                    Game.Instance.Tick();
+                    Thread.Sleep(10);
+                }
+            }
+            #endregion
             GameState.isAnimating = false;
         }
 
@@ -263,11 +320,18 @@ namespace Controller
             // take action corresponding to which button was clicked
             switch (button.getButtonType())
             {
-                case MenuButtonType.Attack:         // if attack clicked
-                    turnState = TurnState.Attack;
+                
+                case MenuButtonType.Attack:         // if attackMenu clicked
+                    turnState = TurnState.AttackMenu;
                     GameState.dropDownMenuOpen = (false);    // close the dropdownmenu when selecting who to attack
                     button.setActive(false);
                     break;
+                case MenuButtonType.AttackConfirm:         // if confirm attack clicked
+                    turnState = TurnState.Attack;
+                    button.setActive(false);
+                    Unit unit = GameState.selectedUnit;
+                    MenuButton moveButtons = unit.getMenuButtonAt(1);
+                    break;
                 case MenuButtonType.Move:           // if moved is clicked
                     turnState = TurnState.Move;
                     GameState.dropDownMenuOpen = (false);   // close the dropdownmenu when selecting where to move
diff --git a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
index 3ded9a9..27262a4 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs
@@ -39,6 +39,7 @@ namespace Model
         Texture2D getCharInfo();                // returns the char info screen texture
         Tuple<int, int> Position { get; set;}   // gets and sets unit's position by tile
         Vector2 PixelCoordinates { get; set; }
+        MenuButton getMenuButtonAt(int i);
 
         MenuButton[] getMenuButtons();          // returns the dropdown menu buttons of the unit
         Rectangle getCurrentFrame();            // returns the current sprite frame in animation sequence
diff --git a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
index abcdc44..b2b9b64 100644
--- a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
+++ b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs
@@ -183,6 +183,11 @@ namespace Model
         {
             return menuButtons;
         }
+
+        public MenuButton getMenuButtonAt(int i)
+        {
+            return menuButtons[i];
+        }
         
         // updates menu button positions
         public void setMenuButtonCoordinates(Vector2 pixelCoordinates)
-- 
GitLab