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