diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/CollisionCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/CollisionCommand.java index 52ec2b34..901ac860 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/CollisionCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/CollisionCommand.java @@ -36,6 +36,7 @@ public class CollisionCommand extends ObserverCommand { @Override public void update(Observable o, Object arg) { if(GPSCoordinate.calculateDistanceMeters(boat.getPosition(), startingPosition) < distance) { + boat.setVelocityDefault(false); boat.setPosition(GPSCoordinate.calculateNewPosition(boat.getPosition(), 3, azimuth)); } else { race.deleteObserver(this); diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java index d26f794c..826e697b 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/SailsCommand.java @@ -37,15 +37,18 @@ public class SailsCommand extends ObserverCommand { public void update(Observable o, Object arg) { double acceleration = 0.5; - if(sailsOut && boat.getCurrentSpeed() < goalVelocity) { - if (!boat.isColliding()) boat.setCurrentSpeed(Math.min(goalVelocity, boat.getCurrentSpeed() + acceleration)); - } else if (!sailsOut && boat.getCurrentSpeed() > goalVelocity) { - // Apply deceleration to strictly 0 speed - if (!boat.isColliding()) boat.setCurrentSpeed(Math.max(0, boat.getCurrentSpeed() - acceleration)); - } else { - // Release boat from SailsCommand control - if(sailsOut) boat.setVelocityDefault(true); - race.deleteObserver(this); + if (!boat.isColliding()) { + boat.setVelocityDefault(false); + if (sailsOut && boat.getCurrentSpeed() < goalVelocity) { + boat.setCurrentSpeed(Math.min(goalVelocity, boat.getCurrentSpeed() + acceleration)); + } else if (!sailsOut && boat.getCurrentSpeed() > goalVelocity) { + // Apply deceleration to strictly 0 speed + boat.setCurrentSpeed(Math.max(0, boat.getCurrentSpeed() - acceleration)); + } else { + // Release boat from SailsCommand control + if (sailsOut) boat.setVelocityDefault(true); + race.deleteObserver(this); + } } } }