package inf112.fiasko.roborally.objects; import inf112.fiasko.roborally.element_properties.Position; import inf112.fiasko.roborally.element_properties.RobotID; /** * This class represents a robot */ public class Robot { private int robotDamageTaken = 0; private final RobotID robotId; private boolean inPowerDown = false; private int lastFlagVisited = 0; private Position backupPosition; private Position currentPosition; /** * Instantiates a new robot * @param robotId gives the robot a identifier that links it too the correct player * @param spawnPosition gives the robot its starting position on the map */ public Robot (RobotID robotId, Position spawnPosition) { this.robotId = robotId; this.backupPosition = spawnPosition; this.currentPosition = spawnPosition; } /** * Gets the damage the robot has taken * @return the amount of damage the robot has received */ public int getDamage(){ return robotDamageTaken; } /** * Sets the robot's damage to a given amount * @param damage the amount of damage the robot has received */ public void setDamage (int damage){ this.robotDamageTaken = damage; } /** * Gets the robot's current position on the map * @return the robot's current position */ public Position getPosition(){ return currentPosition; } /** * places the robot on a new position * @param newPosition the new position for the robot */ public void setPosition( Position newPosition ){ this.currentPosition = newPosition; } /** * Places the status of the powerdown field * @param powerDownStatus True if robot is going to go to powerdown. False otherwise */ public void setPowerDown(Boolean powerDownStatus){ this.inPowerDown = powerDownStatus; } /** * Gets the status of the robot's powerdown field * @return robot's powerdown status */ public Boolean isInPowerDown(){ return inPowerDown; } /** * Set the robot's last visited flag too the new flag and places its backup on the flags position * @param currentFlag the flag the robot is standing on * @param newBackupPosition the position of the flag */ public void setLastFlagVisitedAndBackupPosition(int currentFlag, Position newBackupPosition){ this.lastFlagVisited = currentFlag; this.backupPosition = newBackupPosition; } /** * Gets the correct flag the robot visited * @return last visited flag */ public int getLastFlagVisited(){ return lastFlagVisited; } /** * Gets the robot's backup position * @return The robot's backup position */ public Position getBackupPosition(){ return backupPosition; } /** * Gets the identifier of the players controlling the robot * @return player identifier */ public RobotID getRobotId(){ return robotId; } }