From 03713d3699fd76cc7b64463093c4c7573d6cde9e Mon Sep 17 00:00:00 2001 From: zwu18 Date: Wed, 9 Aug 2017 16:37:29 +1200 Subject: [PATCH 1/5] Added checkPosition into MockRace which was removed. Boat now updates legs again. #Story[1097] --- .../src/main/java/mock/model/MockRace.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/racevisionGame/src/main/java/mock/model/MockRace.java b/racevisionGame/src/main/java/mock/model/MockRace.java index 3ac8418e..87c0fa7c 100644 --- a/racevisionGame/src/main/java/mock/model/MockRace.java +++ b/racevisionGame/src/main/java/mock/model/MockRace.java @@ -346,7 +346,7 @@ public class MockRace extends Race { this.updateEstimatedTime(boat); } - + checkPosition(boat, totalElapsedMilliseconds); } private void newOptimalVMG(MockBoat boat) { @@ -443,6 +443,44 @@ public class MockRace extends Race { } + /** + * Checks if a boat has finished any legs, or has pulled out of race (DNF). + * @param boat The boat to check. + * @param timeElapsed The total time, in milliseconds, that has elapsed since the race started. + */ + protected void checkPosition(MockBoat boat, long timeElapsed) { + + //The distance, in nautical miles, within which the boat needs to get in order to consider that it has reached the marker. + double epsilonNauticalMiles = 100.0 / Constants.NMToMetersConversion; //100 meters. TODO should be more like 5-10. + + if (boat.calculateDistanceToNextMarker() < epsilonNauticalMiles) { + //Boat has reached its target marker, and has moved on to a new leg. + + //Calculate how much the boat overshot the marker by. + double overshootMeters = boat.calculateDistanceToNextMarker(); + + //Move boat on to next leg. + Leg nextLeg = this.legs.get(boat.getCurrentLeg().getLegNumber() + 1); + boat.setCurrentLeg(nextLeg); + + //Add overshoot distance into the distance travelled for the next leg. + boat.setDistanceTravelledInLeg(overshootMeters); + + //Setting a high value for this allows the boat to immediately do a large turn, as it needs to in order to get to the next mark. + boat.setTimeSinceTackChange(999999); + + //Check if the boat has finished + if (this.isLastLeg(boat.getCurrentLeg())) { + //Boat has finished. + boat.setTimeFinished(timeElapsed); + boat.setCurrentSpeed(0); + boat.setStatus(BoatStatusEnum.FINISHED); + } + } + + } + + public List getCompoundMarks() { return compoundMarks; } From 9c902dab46c2fd9a63cadca75821a5dab3867ae8 Mon Sep 17 00:00:00 2001 From: zwu18 Date: Sat, 12 Aug 2017 02:11:23 +1200 Subject: [PATCH 2/5] Added javadoc to classes. #story[1097] --- .../mock/model/commandFactory/TackGybeCommand.java | 13 ++++++++++++- .../java/mock/model/commandFactory/VMGCommand.java | 7 ++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java index 447ab2fb..f98ce671 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java @@ -6,12 +6,17 @@ import mock.model.VMG; import shared.model.Bearing; /** - * Created by David on 2/08/2017. + * Command class for tacking and gybing */ public class TackGybeCommand implements Command { private MockRace race; private MockBoat boat; + /** + * Constructor for class + * @param race mock race + * @param boat mock boat to update + */ public TackGybeCommand(MockRace race, MockBoat boat) { this.race = race; this.boat = boat; @@ -39,6 +44,12 @@ public class TackGybeCommand implements Command { } } + /** + * Method to calculate smallest angle between 2 angles + * @param degreeA first angle degree + * @param degreeB second angle degree + * @return the calculated smallest angle + */ public double calcDistance(double degreeA, double degreeB){ double phi = Math.abs(degreeB - degreeA) % 360; double distance = phi > 180 ? 360 - phi : phi; diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java index d6e3d988..17e5155c 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java @@ -4,12 +4,17 @@ import mock.model.MockBoat; import mock.model.MockRace; /** - * Created by David on 2/08/2017. + * Command class for autoVMG */ public class VMGCommand implements Command { private MockRace race; private MockBoat boat; + /** + * Constructor for class + * @param race mock race + * @param boat mock boat to update + */ public VMGCommand(MockRace race, MockBoat boat) { this.race = race; this.boat = boat; From 848edfc6a4e50ee4db2aa8be80af18cb4ca74373 Mon Sep 17 00:00:00 2001 From: zwu18 Date: Sat, 12 Aug 2017 03:20:21 +1200 Subject: [PATCH 3/5] Removed commented out code. Merged master in. #story[1097] --- .../java/mock/model/commandFactory/TackGybeCommand.java | 8 -------- .../main/java/mock/model/commandFactory/VMGCommand.java | 1 - 2 files changed, 9 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java index f98ce671..d78fd5e1 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java @@ -22,16 +22,8 @@ public class TackGybeCommand implements Command { this.boat = boat; } - //The refactoring of MockRace will require changes to be made @Override public void execute() { - /*if(boat.getBearing().degrees()>180){ - boat.setBearing(Bearing.fromDegrees(360 - race.getWindDirection().degrees())); - } else { - boat.setBearing(Bearing.fromDegrees(race.getWindDirection().degrees())); - }*/ - /*double angle = Math.max(race.getWindDirection().degrees(), boat.getBearing().degrees()) - Math.min(race.getWindDirection().degrees(), boat.getBearing().degrees()); - boat.setBearing(Bearing.fromDegrees(angle));*/ double boatAngle = boat.getBearing().degrees(); double windAngle =race.getWindDirection().degrees(); double differenceAngle = calcDistance(boatAngle, windAngle); diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java index 17e5155c..8c7d2043 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java @@ -20,7 +20,6 @@ public class VMGCommand implements Command { this.boat = boat; } - //The refactoring of MockRace will require changes to be made @Override public void execute() { if (boat.getAutoVMG()){ From b97bfe62a60a0a7a722a925d1aa95436424751b8 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Tue, 15 Aug 2017 00:52:50 +1200 Subject: [PATCH 4/5] Fixed documentation bugs not relevant to story. --- .../java/mock/model/commandFactory/CommandFactory.java | 2 +- .../visualiser/gameController/ControllerServer.java | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java b/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java index fba06cb5..b7a150f2 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java @@ -13,7 +13,7 @@ public class CommandFactory { * @param race to receive command * @param boat to receive command in race * @param action number to select command - * @return + * @return command object corresponding to action */ public static Command createCommand(MockRace race, MockBoat boat, BoatActionEnum action) { switch(action) { diff --git a/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java b/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java index 63c5b263..119cbbad 100644 --- a/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java +++ b/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java @@ -30,19 +30,15 @@ public class ControllerServer extends Observable implements Runnable { * Last received boat action */ private BoatActionEnum action; - /** - * - */ - private RaceLogic rc; /** * Initialise server-side controller with live client socket * @param socket to client + * @param race logic loop observing controls */ - public ControllerServer(Socket socket, RaceLogic rc) { + public ControllerServer(Socket socket, RaceLogic race) { this.socket = socket; - this.rc = rc; - this.addObserver(rc); + this.addObserver(race); try { this.inputStream = new DataInputStream(this.socket.getInputStream()); } catch (IOException e) { From da52082d70776287f3fd210c01da39a0c15cb2b0 Mon Sep 17 00:00:00 2001 From: cbt24 Date: Tue, 15 Aug 2017 11:40:22 +1200 Subject: [PATCH 5/5] Deleted duplicate method (again -.-) --- .../src/main/java/mock/model/MockRace.java | 37 ------------------- 1 file changed, 37 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/MockRace.java b/racevisionGame/src/main/java/mock/model/MockRace.java index 99187bd7..e88307be 100644 --- a/racevisionGame/src/main/java/mock/model/MockRace.java +++ b/racevisionGame/src/main/java/mock/model/MockRace.java @@ -688,43 +688,6 @@ public class MockRace extends Race { } - /** - * Checks if a boat has finished any legs, or has pulled out of race (DNF). - * @param boat The boat to check. - * @param timeElapsed The total time, in milliseconds, that has elapsed since the race started. - */ - protected void checkPosition(MockBoat boat, long timeElapsed) { - - //The distance, in nautical miles, within which the boat needs to get in order to consider that it has reached the marker. - double epsilonNauticalMiles = 100.0 / Constants.NMToMetersConversion; //100 meters. TODO should be more like 5-10. - - if (boat.calculateDistanceToNextMarker() < epsilonNauticalMiles) { - //Boat has reached its target marker, and has moved on to a new leg. - - //Calculate how much the boat overshot the marker by. - double overshootMeters = boat.calculateDistanceToNextMarker(); - - //Move boat on to next leg. - Leg nextLeg = this.legs.get(boat.getCurrentLeg().getLegNumber() + 1); - boat.setCurrentLeg(nextLeg); - - //Add overshoot distance into the distance travelled for the next leg. - boat.setDistanceTravelledInLeg(overshootMeters); - - //Setting a high value for this allows the boat to immediately do a large turn, as it needs to in order to get to the next mark. - boat.setTimeSinceTackChange(999999); - - //Check if the boat has finished - if (this.isLastLeg(boat.getCurrentLeg())) { - //Boat has finished. - boat.setTimeFinished(timeElapsed); - boat.setCurrentSpeed(0); - boat.setStatus(BoatStatusEnum.FINISHED); - } - } - - } - public List getCompoundMarks() { return compoundMarks;