diff --git a/network/src/main/java/seng302/Networking/MessageDecoders/BoatLocationDecoder.java b/network/src/main/java/seng302/Networking/MessageDecoders/BoatLocationDecoder.java index 91c8088c..e2352640 100644 --- a/network/src/main/java/seng302/Networking/MessageDecoders/BoatLocationDecoder.java +++ b/network/src/main/java/seng302/Networking/MessageDecoders/BoatLocationDecoder.java @@ -61,6 +61,9 @@ public class BoatLocationDecoder { currentSet = Arrays.copyOfRange(encodedBoatLocation,52, 54); rudderAngle = Arrays.copyOfRange(encodedBoatLocation,54, 56); +// System.out.println(bytesToInt(sourceID)); +// System.out.println(bytesToInt(boatSpeed)); + message = new BoatLocationMessage(messageVersionNumber, bytesToLong(time), bytesToInt(sourceID), bytesToInt(seqNum), deviceType, bytesToInt(latitude), diff --git a/network/src/main/java/seng302/Networking/Utils/BoatLocationMessage.java b/network/src/main/java/seng302/Networking/Utils/BoatLocationMessage.java index 4f236747..2a60a528 100644 --- a/network/src/main/java/seng302/Networking/Utils/BoatLocationMessage.java +++ b/network/src/main/java/seng302/Networking/Utils/BoatLocationMessage.java @@ -166,7 +166,7 @@ public class BoatLocationMessage extends AC35Data this.roll = 0; this.boatSpeed = convertBoatSpeedDoubleToInt(boatSpeed); this.boatCOG = 0; - this.boatSOG = 0; + this.boatSOG = convertBoatSpeedDoubleToInt(boatSpeed); this.apparentWindSpeed = 0; this.apparentWindAngle = 0; this.trueWindSpeed = 0; @@ -190,8 +190,6 @@ public class BoatLocationMessage extends AC35Data int coordinateInt = (int) ((coordinate / 180.0) * 2147483648.0); return coordinateInt; - - } /** diff --git a/visualiser/src/main/java/seng302/Controllers/RaceController.java b/visualiser/src/main/java/seng302/Controllers/RaceController.java index b893b3ad..e1195dab 100644 --- a/visualiser/src/main/java/seng302/Controllers/RaceController.java +++ b/visualiser/src/main/java/seng302/Controllers/RaceController.java @@ -6,8 +6,10 @@ import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.fxml.FXML; +import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.layout.GridPane; +import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import seng302.Mock.StreamedRace; import seng302.Model.*; @@ -129,7 +131,7 @@ public class RaceController extends Controller { raceMap.drawRaceMap(); raceMap.setVisible(true); - canvasBase.getChildren().add(raceMap); + canvasBase.getChildren().add(0, raceMap); race.setVisible(true); //Initialize save annotation array, fps listener, and annotation listeners diff --git a/visualiser/src/main/java/seng302/Mock/StreamedRace.java b/visualiser/src/main/java/seng302/Mock/StreamedRace.java index 90f79355..c5194d5f 100644 --- a/visualiser/src/main/java/seng302/Mock/StreamedRace.java +++ b/visualiser/src/main/java/seng302/Mock/StreamedRace.java @@ -58,6 +58,10 @@ public class StreamedRace extends Race { int legNumber = boatStatusMessage.getLegNumber(); + if (legNumber >= 1 && legNumber < legs.size()) { + boat.setCurrentLeg(legs.get(legNumber)); + } + if (boatStatus == BoatStatus.DNF) { boat.setDnf(true); } else if (boatStatus == BoatStatus.FINISHED || legNumber > raceData.getLegs().size()) { @@ -84,7 +88,7 @@ public class StreamedRace extends Race { double lon = boatLocationMessage.getLongitudeDouble(); boat.setCurrentPosition(new GPSCoordinate(lat, lon)); boat.setHeading(boatLocationMessage.getHeadingDegrees()); - boat.setVelocity(boatLocationMessage.getBoatSpeed() * MMPS_TO_KN); + boat.setVelocity(boatLocationMessage.getBoatSOG() * MMPS_TO_KN); } } diff --git a/visualiser/src/main/java/seng302/Model/Race.java b/visualiser/src/main/java/seng302/Model/Race.java index 6cdd435b..edc40181 100644 --- a/visualiser/src/main/java/seng302/Model/Race.java +++ b/visualiser/src/main/java/seng302/Model/Race.java @@ -247,7 +247,7 @@ public abstract class Race implements Runnable { for(Boat boat: startingBoats) { if(boat != null) { boat.setPosition(Integer.toString(startingBoats.indexOf(boat) + 1)); - if (boat.getCurrentLeg().getName().equals("DNF") || boat.getCurrentLeg().getLegNumber() == 0) + if (boat.isDnf() || !boat.isStarted() || boat.getCurrentLeg().getLegNumber() < 0) boat.setPosition("-"); } }