diff --git a/src/main/java/seng302/gameServer/GameState.java b/src/main/java/seng302/gameServer/GameState.java index 3c3ec2c6..9b1dc484 100644 --- a/src/main/java/seng302/gameServer/GameState.java +++ b/src/main/java/seng302/gameServer/GameState.java @@ -232,24 +232,23 @@ public class GameState implements Runnable { Double boatSpeedInKnots = PolarTable.getBoatSpeed(getWindSpeedKnots(), trueWindAngle); Double maxBoatSpeed = GeoUtility.knotsToMMS(boatSpeedInKnots); yacht.setCurrentMaxVelocity(maxBoatSpeed); - - if (yacht.getSailIn() && yacht.getCurrentVelocity() <= maxBoatSpeed && maxBoatSpeed != 0d) { - if (velocity < maxBoatSpeed) { - yacht.changeVelocity(maxBoatSpeed / 15); - } - if (velocity > maxBoatSpeed) { + System.out.println(maxBoatSpeed); + // TODO: 15/08/17 remove magic numbers from these equations. + if (yacht.getSailIn()) { + if (velocity < maxBoatSpeed - 500) { + yacht.changeVelocity(maxBoatSpeed / 150); + } else if (velocity > maxBoatSpeed + 500) { + yacht.changeVelocity(-maxBoatSpeed / 100); + } else { yacht.setCurrentVelocity(maxBoatSpeed); } } else { - if (velocity > 0d) { - if (maxBoatSpeed != 0d) { - yacht.changeVelocity(-maxBoatSpeed / 600); - } else { - yacht.changeVelocity(-velocity / 100); - } - if (velocity < 0) { - yacht.setCurrentVelocity(0d); - } + if (velocity > 3000) { + yacht.changeVelocity(-velocity / 200); + } else if (velocity > 100) { + yacht.changeVelocity(-velocity / 50); + } else if (velocity <= 100){ + yacht.setCurrentVelocity(0d); } } }