From d2bb15471aa3a19d5b2717bc0ff784d083134a54 Mon Sep 17 00:00:00 2001 From: Calum Date: Tue, 15 Aug 2017 15:12:39 +1200 Subject: [PATCH] Changed the velocity equation for boats to handle outlying scenarios such as 0 velocity. #bug --- .../java/seng302/gameServer/GameState.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) 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); } } }