diff --git a/src/Blaze-Brigade/Blaze_Brigade/Game.cs b/src/Blaze-Brigade/Blaze_Brigade/Game.cs index 2dc60ca4fd4fe0381ebdbfa46280bebc1d0964d5..5895886cb2e263a96b87a5ce0a53d89b4e86d7d7 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/Game.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/Game.cs @@ -207,17 +207,17 @@ namespace Controller { - if (GameState.getBeforeMove()) + if (GameState.getBeforeMove()) // if unit has yet to move, display the overall move and attack range of unit { #region Highlight nodes - //Highlight movable nodes in blue + // Highlight movable nodes in blue LinkedList<Node> moveableNodes = GameFunction.getMovableNodes(graph, unit); foreach (Node move in moveableNodes) { spriteBatch.Draw(moveableNode, move.getPosition(), null, Color.White * 0.2f, 0, Vector2.Zero, 1f, SpriteEffects.None, 0.9f); } - //Highlight attackable nodes in red + // Highlight attackable nodes in red LinkedList<Node> attackableNodes = GameFunction.getAttackableNodes(graph, unit); foreach (Node attack in attackableNodes) { @@ -227,9 +227,14 @@ namespace Controller } } #endregion - }else + } + else // elseif unit has already moved, only display the attack range { - + LinkedList<Node> attackableNodes = GameFunction.getAttackRangeAfterMoving(graph, unit); + foreach (Node attack in attackableNodes) + { + spriteBatch.Draw(attackableNode, attack.getPosition(), null, Color.White * 0.2f, 0, Vector2.Zero, 1f, SpriteEffects.None, 0.9f); + } } #region Drop Down menu diff --git a/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs b/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs index 2afc970addd0ba10f237eba7426ce08cce828df6..2f243dfa94207b8605d7787c32c0b244cc7098d6 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/GameFunction.cs @@ -130,6 +130,24 @@ namespace Controller return attackableNodes; } + public static LinkedList<Node> getAttackRangeAfterMoving(Graph graph, Unit unit) + { + LinkedList<Node> attackableNodes = new LinkedList<Node>(); + Tuple<int, int> currentPosition = unit.getPosition(); + for (int x = 0; x < graph.getWidth(); x++) + { + for (int y = 0; y < graph.getHeight(); y++) + { + if (isNodeAttackable(unit.getClass(), currentPosition.Item1, currentPosition.Item2, graph.getNode(x, y))) + { + // if node is attackable, add it to list of attackable nodes + attackableNodes.AddLast(graph.getNode(x, y)); + } + } + } + return attackableNodes; + } + // returns list of nodes representing the path from start node to end node; if no path is valid, return null public static LinkedList<Node> pathFinder(Graph graph, Unit unit, Node start, Node end) { diff --git a/src/Blaze-Brigade/Blaze_Brigade/GameState.cs b/src/Blaze-Brigade/Blaze_Brigade/GameState.cs index 1fff4ed150a0aca8cba5f2a103600a31d7ee9c25..358b80896910808a3768d4f745d1ed607e0a8179 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/GameState.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/GameState.cs @@ -62,21 +62,25 @@ namespace Model isAnimating = animating; } + // sets if the dropDownMenu is currently opened public static void setMenuOpen(bool isOpen) { dropDownMenuOpen = isOpen; } + // returns if the dropdownmenu is currently opened public static bool getMenuOpen() { return dropDownMenuOpen; } + //sets determines if the unit is preparing to move, or already moved public static void setBeforeMove(bool hasMove) { beforeMove = hasMove; } + //returns whether the unit has moved public static bool getBeforeMove() { return beforeMove; diff --git a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs index e529e994da718041b603aed433e00c415eb5ca3d..45b8493517f1059267715e2fc05b09cdfe90c73c 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/MouseHandler.cs @@ -65,7 +65,6 @@ namespace Controller if (turnState == TurnState.Move) { // remove drop down menu from screen - GameState.getSelectedUnit().setMenuOpen(false); Game.Instance.Tick(); // set variables for path finding @@ -79,7 +78,7 @@ namespace Controller updateUnitPosition(mouseClickCoordinates, path); } - GameState.getSelectedUnit().setMenuOpen(true); // opens drop down menu on screen again + turnState = TurnState.Wait; } } @@ -103,10 +102,7 @@ namespace Controller // sets selection of unit state inside GameFunction and the unit itself private static void setSelectedUnit(Unit unit, bool selected) { - if (unit != null) - { - unit.setMenuOpen(selected); - } + GameState.setPlayableUnitSelected(selected); GameState.setSelectedUnit(unit); } diff --git a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs index 4a5c8974e268659be7467d98d1b4aa92e835ed74..1309cdcb56a4758d2d30b29d62ddb6846eac1296 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/Unit.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/Unit.cs @@ -36,8 +36,6 @@ namespace Model void setPosition(int x, int y); // sets the current position (by node) of the unit void setEquippedWeapon(Weapon w); // sets the unit's currently equipped weapon void setMoved(bool a); // on start of players turn, set all units to unmoved (F) - void setMenuOpen(bool a); // Sets if the dropdown menu should be opened - bool getMenuOpen(); // returns if the dropdown menu should be open MenuButton[] getMenuButtons(); // returns the dropdown menu buttons of the unit } diff --git a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs index 9fb6ca68f0ed9f3b4ce8de6a87639327c6ab0999..981c0fa1f278d023a4a5f2f54e59fb09579d8a1a 100644 --- a/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs +++ b/src/Blaze-Brigade/Blaze_Brigade/Warrior.cs @@ -204,18 +204,6 @@ namespace Model this.moved = a; } - // set if menu should be open - public void setMenuOpen(bool a) - { - menuOpen = a; - } - - // return if menu has been open - public Boolean getMenuOpen() - { - return menuOpen; - } - public MenuButton[] getMenuButtons() { return menuButtons;