diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
deleted file mode 100644
index 5352bdf8..00000000
--- a/.idea/codeStyleSettings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/racevisionGame/src/main/java/mock/model/MockRace.java b/racevisionGame/src/main/java/mock/model/MockRace.java
index e14220f3..e88307be 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) {
@@ -688,6 +688,7 @@ public class MockRace extends Race {
}
+
public List getCompoundMarks() {
return compoundMarks;
}
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/mock/model/commandFactory/TackGybeCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java
index 8dcf1c48..50023719 100644
--- a/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java
+++ b/racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java
@@ -2,34 +2,49 @@ package mock.model.commandFactory;
import mock.model.MockBoat;
import mock.model.MockRace;
+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;
}
- //The refactoring of MockRace will require changes to be made
@Override
public void execute() {
+ double boatAngle = boat.getBearing().degrees();
+ double windAngle =race.getWindDirection().degrees();
+ double differenceAngle = calcDistance(boatAngle, windAngle);
+ double angleA = windAngle + differenceAngle;
+ double angleB = windAngle - differenceAngle;
+ if(angleA % 360 == boatAngle){
+ boat.setBearing(Bearing.fromDegrees(angleB));
+ } else {
+ boat.setBearing(Bearing.fromDegrees(angleA));
+ }
+ }
- boat.setAutoVMG(false);
-
- /*VMG newVMG = boat.getPolars().calculateVMG(
- race.getWindDirection(),
- race.getWindSpeed(),
- boat.calculateBearingToNextMarker(),
- Bearing.fromDegrees(0d),
- Bearing.fromDegrees(359.99999d));
- VMG boatVMG = new VMG(boat.getCurrentSpeed(), boat.getBearing());
- if(race.improvesVelocity(boatVMG, newVMG, boat.calculateBearingToNextMarker())){
- boat.setVMG(newVMG);
- }*/
+ /**
+ * 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;
+ return 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 1a1eeda5..8c7d2043 100644
--- a/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java
+++ b/racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java
@@ -4,27 +4,30 @@ 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;
}
- //The refactoring of MockRace will require changes to be made
@Override
public void execute() {
- boat.setAutoVMG(true);
- /*VMG newVMG = boat.getPolars().calculateVMG(
- race.getWindDirection(),
- race.getWindSpeed(),
- boat.calculateBearingToNextMarker(),
- Bearing.fromDegrees(0d),
- Bearing.fromDegrees(359.99999d));
- boat.setVMG(newVMG);*/
+ if (boat.getAutoVMG()){
+ boat.setAutoVMG(false);
+ System.out.println("Auto VMG off!");
+ } else {
+ boat.setAutoVMG(true);
+ System.out.println("Auto VMG on!");
+ }
}
}
diff --git a/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java b/racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java
index dbbca586..7317e70a 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) {