diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 60f22080..80163138 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -62,9 +62,9 @@ public class App extends Application } //Change the StreamReceiver in this else block to change the default data source. else{ - sr = new StreamReceiver("livedata.americascup.com", 4941, "RaceStream"); +// sr = new StreamReceiver("livedata.americascup.com", 4941, "RaceStream"); -// sr = new StreamReceiver("localhost", 4949, "RaceStream"); + sr = new StreamReceiver("localhost", 4949, "RaceStream"); } sr.start(); diff --git a/src/main/java/seng302/models/BoatGroup.java b/src/main/java/seng302/models/BoatGroup.java index 1d689c5f..8204a41c 100644 --- a/src/main/java/seng302/models/BoatGroup.java +++ b/src/main/java/seng302/models/BoatGroup.java @@ -8,7 +8,10 @@ import javafx.scene.shape.Polygon; import javafx.scene.text.Text; import javafx.scene.transform.Rotate; import javafx.stage.Stage; +import seng302.models.parsers.StreamParser; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @@ -86,7 +89,9 @@ public class BoatGroup extends RaceObject{ teamNameObject = new Text(boat.getShortName()); velocityObject = new Text(String.valueOf(boat.getVelocity())); - estTimeToNextMarkObject = new Text(String.valueOf(boat.getEstimateTimeAtNextMark())); + DateFormat format = new SimpleDateFormat("mm:ss"); + String timeToNextMark = format.format(boat.getEstimateTimeAtNextMark() - StreamParser.getCurrentTimeLong()); + estTimeToNextMarkObject = new Text("Next mark: " + timeToNextMark); teamNameObject.setX(TEAMNAME_X_OFFSET); teamNameObject.setY(TEAMNAME_Y_OFFSET); @@ -236,7 +241,9 @@ public class BoatGroup extends RaceObject{ wake.setRotationalVelocity(rotationalVelocity, rotationalGoal, boat.getVelocity()); } velocityObject.setText(String.format("%.2f m/s", boat.getVelocity())); - estTimeToNextMarkObject.setText(String.valueOf(boat.getEstimateTimeAtNextMark())); + DateFormat format = new SimpleDateFormat("mm:ss"); + String timeToNextMark = format.format(boat.getEstimateTimeAtNextMark() - StreamParser.getCurrentTimeLong()); + estTimeToNextMarkObject.setText("Next mark: " + timeToNextMark); } else { setToInitialLocation = true; rotationalGoal = rotation; diff --git a/src/main/java/seng302/models/Yacht.java b/src/main/java/seng302/models/Yacht.java index 31871684..68970268 100644 --- a/src/main/java/seng302/models/Yacht.java +++ b/src/main/java/seng302/models/Yacht.java @@ -114,10 +114,10 @@ public class Yacht { this.penaltiesServed = penaltiesServed; } - public String getEstimateTimeAtNextMark() { - DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - return format.format(estimateTimeAtNextMark); -// return estimateTimeAtNextMark; + public Long getEstimateTimeAtNextMark() { +// DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); +// return format.format(estimateTimeAtNextMark); + return estimateTimeAtNextMark; } public void setEstimateTimeAtNextMark(Long estimateTimeAtNextMark) { diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index ab15722b..1aca5826 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -39,6 +39,7 @@ public class StreamParser extends Thread{ private static Map boats = new HashMap<>(); private static Map boatsPos = new TreeMap<>(); private static double windDirection = 0; + private static Long currentTimeLong; private static String currentTimeString; private static boolean appRunning; @@ -199,6 +200,7 @@ public class StreamParser extends Thread{ // System.out.println("raceStatus = " + raceStatus); long expectedStartTime = bytesToLong(Arrays.copyOfRange(payload,12,18)); + currentTimeLong = currentTime; DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); if (xmlObject.getRegattaXML() != null) { format.setTimeZone(TimeZone.getTimeZone(getTimeZoneString())); @@ -575,6 +577,15 @@ public class StreamParser extends Thread{ return boatsPos; } + /** + * returns current time in stream in long + * + * @return a long value of current time + */ + public static Long getCurrentTimeLong() { + return currentTimeLong; + } + public static void appClose(){ appRunning = false; System.out.println("[CLIENT] Shutting down stream parser");