diff --git a/src/main/java/inf112/fiasko/roborally/objects/Board.java b/src/main/java/inf112/fiasko/roborally/objects/Board.java index 5ab22dc..f89c1b1 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/Board.java +++ b/src/main/java/inf112/fiasko/roborally/objects/Board.java @@ -178,6 +178,19 @@ public class Board { return robots.containsKey(robot); } + /** + * Updates the flag of the robot if it stands on the correct flag. + * @param robotID The RobotID of a robot + * @param flagID TileType of the flag we check + */ + public void updateFlagOnRobot(RobotID robotID, TileType flagID) { + Robot robot = robots.get(robotID); + int flagNr = flagID.getTileTypeID() % 16; + if (flagNr - 1 == robot.getLastFlagVisited()) { + robot.setLastFlagVisitedAndUpdateBackupPosition(flagNr); + } + } + /** * Checks if a potential robot move would be blocked by a wall * @param robotPosition The current position of the robot diff --git a/src/main/java/inf112/fiasko/roborally/objects/BoardElementContainer.java b/src/main/java/inf112/fiasko/roborally/objects/BoardElementContainer.java index e120140..7b253c7 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/BoardElementContainer.java +++ b/src/main/java/inf112/fiasko/roborally/objects/BoardElementContainer.java @@ -8,7 +8,7 @@ import inf112.fiasko.roborally.element_properties.Position; */ public class BoardElementContainer { K obj; - Position pos; + private Position pos; /** * Initializes the BoardElementContainer diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index 74ae131..21e0eb5 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -5,6 +5,7 @@ import inf112.fiasko.roborally.element_properties.Position; import inf112.fiasko.roborally.element_properties.RobotID; import inf112.fiasko.roborally.element_properties.TileType; import inf112.fiasko.roborally.utility.BoardLoaderUtil; +import javafx.geometry.Pos; import java.io.IOException; import java.util.ArrayList; @@ -204,4 +205,19 @@ public class RoboRallyGame implements IDrawableGame { } } } + + /** + * Checks all flags for robots. Tries to update the flag of the robot. + */ + private void checkAllFlags() { + List> listOfFlags = gameBoard.getPositionsOfTileOnBoard(TileType.FLAG_1, + TileType.FLAG_2, TileType.FLAG_3, TileType.FLAG_4); + for (BoardElementContainer flag:listOfFlags) { + Position flagPosition = flag.getPosition(); + if (gameBoard.hasRobotOnPosition(flagPosition)) { + RobotID robot = gameBoard.getRobotOnPosition(flagPosition); + gameBoard.updateFlagOnRobot(robot, flag.getObject().getTileType()); + } + } + } } \ No newline at end of file