diff --git a/src/Blaze-Brigade/Blaze_Brigade/GameState.cs b/src/Blaze-Brigade/Blaze_Brigade/GameState.cs index 3e7bbe95a1743f7c1f6e77e3ac95496fcc6c74e2..4347d49ce922d6d20360f847677b670bf89e8811 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 aabed921d6091600bd2c5a8dfa9939ded2a68594..7905d3532c9312c12df6a3bbccec00ef97b38326 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 5426a46f3250b68afc4e858cd9cdcde44f2678db..92549984c902362dde8ed09f8ec42c87063979e4 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 3ded9a9b7670a552d70e77afc1a136e05feb2013..27262a4442abaa335aaf8faa02f3de073191e20e 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 abcdc44d4055be066a4793eb521e4433b126cfbd..b2b9b641125d9290ff1ff87cca95d089580c9fe1 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)