mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-01-31 23:29:36 +01:00
parent
cf8c04dc17
commit
417681d1e2
@ -329,6 +329,9 @@ public class Board {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Position positionInFront = getNewPosition(conveyorBeltPosition, conveyorBeltDirection);
|
Position positionInFront = getNewPosition(conveyorBeltPosition, conveyorBeltDirection);
|
||||||
|
if (!isValidPosition(positionInFront)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
Tile tileInFront = getTileOnPosition(positionInFront);
|
Tile tileInFront = getTileOnPosition(positionInFront);
|
||||||
//If a conveyor belt will move the robot outside the map, the move is valid
|
//If a conveyor belt will move the robot outside the map, the move is valid
|
||||||
if (!isValidPosition(positionInFront)) {
|
if (!isValidPosition(positionInFront)) {
|
||||||
@ -564,7 +567,7 @@ public class Board {
|
|||||||
* @param position The position to test
|
* @param position The position to test
|
||||||
* @return True if the position is valid. False otherwise
|
* @return True if the position is valid. False otherwise
|
||||||
*/
|
*/
|
||||||
private boolean isValidPosition(Position position) {
|
public boolean isValidPosition(Position position) {
|
||||||
return position.getXCoordinate() >= 0
|
return position.getXCoordinate() >= 0
|
||||||
&& position.getXCoordinate() < boardWidth
|
&& position.getXCoordinate() < boardWidth
|
||||||
&& position.getYCoordinate() >= 0
|
&& position.getYCoordinate() >= 0
|
||||||
|
@ -128,10 +128,11 @@ public class Phase {
|
|||||||
if (!gameBoard.hasRobotOnPosition(cogwheel.getPosition())) {
|
if (!gameBoard.hasRobotOnPosition(cogwheel.getPosition())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
RobotID robotAtCogwheel = gameBoard.getRobotOnPosition(cogwheel.getPosition());
|
||||||
if (cogwheel.getElement().getTileType() == TileType.COGWHEEL_RIGHT) {
|
if (cogwheel.getElement().getTileType() == TileType.COGWHEEL_RIGHT) {
|
||||||
gameBoard.rotateRobotRight(gameBoard.getRobotOnPosition(cogwheel.getPosition()));
|
gameBoard.rotateRobotRight(robotAtCogwheel);
|
||||||
} else {
|
} else {
|
||||||
gameBoard.rotateRobotLeft(gameBoard.getRobotOnPosition(cogwheel.getPosition()));
|
gameBoard.rotateRobotLeft(robotAtCogwheel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,7 +270,7 @@ public class Phase {
|
|||||||
Map<RobotID, Position> newPositions, Map<RobotID, Boolean> moveNormally) {
|
Map<RobotID, Position> newPositions, Map<RobotID, Boolean> moveNormally) {
|
||||||
RobotID robotAtConveyorBelt = gameBoard.getRobotOnPosition(conveyorBeltPosition);
|
RobotID robotAtConveyorBelt = gameBoard.getRobotOnPosition(conveyorBeltPosition);
|
||||||
Position newPosition = gameBoard.getNewPosition(conveyorBeltPosition, conveyorBeltDirection);
|
Position newPosition = gameBoard.getNewPosition(conveyorBeltPosition, conveyorBeltDirection);
|
||||||
if (gameBoard.isConveyorBelt(gameBoard.getTileOnPosition(newPosition))) {
|
if (gameBoard.isValidPosition(newPosition) && gameBoard.isConveyorBelt(gameBoard.getTileOnPosition(newPosition))) {
|
||||||
newPositions.put(robotAtConveyorBelt, newPosition);
|
newPositions.put(robotAtConveyorBelt, newPosition);
|
||||||
moveNormally.put(robotAtConveyorBelt, false);
|
moveNormally.put(robotAtConveyorBelt, false);
|
||||||
Direction newDirection = gameBoard.getTileOnPosition(newPosition).getDirection();
|
Direction newDirection = gameBoard.getTileOnPosition(newPosition).getDirection();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user