From af1daebd151649e9970466c5e40cb69b47547017 Mon Sep 17 00:00:00 2001 From: torlunjen Date: Thu, 9 Apr 2020 19:57:29 +0200 Subject: [PATCH] Update RoboRallyGame.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Legger til funksjonalitet for at en robot bare kan registrere besøk på ett flagg hver runde. Co-Authored-By: gabrielmagnus --- .../roborally/objects/RoboRallyGame.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java index fb9f556..8166c48 100644 --- a/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java +++ b/src/main/java/inf112/fiasko/roborally/objects/RoboRallyGame.java @@ -216,6 +216,16 @@ public class RoboRallyGame implements IDrawableGame { // TODO: If this player is in power down, ask if it shall continue // Respawn dead robots, as long as they have more lives left respawnRobots(); + resetHasTouchedFlagThisTurnForAllRobots(); + } + + /** + * Resets the boolean for if the robot has touched a flag this turn, to set up the next turn. + */ + private void resetHasTouchedFlagThisTurnForAllRobots() { + for (Robot robot : gameBoard.getAliveRobots()) { + robot.setHasTouchedFlagThisTurn(false); + } } /** @@ -462,8 +472,14 @@ public class RoboRallyGame implements IDrawableGame { for (BoardElementContainer flag:listOfFlags) { Position flagPosition = flag.getPosition(); if (gameBoard.hasRobotOnPosition(flagPosition)) { - RobotID robot = gameBoard.getRobotOnPosition(flagPosition); - gameBoard.updateFlagOnRobot(robot, flag.getElement().getTileType()); + RobotID robotID = gameBoard.getRobotOnPosition(flagPosition); + for (Robot robot : gameBoard.getAliveRobots()) { + if (robot.getRobotId() != robotID || robot.isHasTouchedFlagThisTurn()) { + continue; + } + gameBoard.updateFlagOnRobot(robotID, flag.getElement().getTileType()); + robot.setHasTouchedFlagThisTurn(true); + } } } }