From 7d789c04bb588fd4b7d8401d795954f085bf2180 Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Mon, 25 Sep 2017 14:07:29 +1300 Subject: [PATCH] Fixed sails out / colliding issue. #story[1297] --- .../commandFactory/CollisionCommand.java | 1 + .../model/commandFactory/SailsCommand.java | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) 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); + } } } }