From ac3f3bfd5586128d71424de3c28833f781d7aecd Mon Sep 17 00:00:00 2001 From: Zhi You Tan Date: Thu, 4 May 2017 14:32:06 +1200 Subject: [PATCH 01/36] Added a check if race started, then start screen switches to race view automatically. #story[572] --- src/main/java/seng302/controllers/Controller.java | 4 ++++ src/main/java/seng302/controllers/RaceViewController.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/seng302/controllers/Controller.java b/src/main/java/seng302/controllers/Controller.java index 7d45d39b..9d964243 100644 --- a/src/main/java/seng302/controllers/Controller.java +++ b/src/main/java/seng302/controllers/Controller.java @@ -89,6 +89,10 @@ public class Controller implements Initializable { @Override public void run() { Platform.runLater(() -> { + if (StreamParser.isRaceStarted()) { + switchToRaceView(); + timer.cancel(); + } if (StreamParser.isRaceFinished()) { realTime.setText(StreamParser.getCurrentTimeString()); timeTillLive.setTextFill(Color.RED); diff --git a/src/main/java/seng302/controllers/RaceViewController.java b/src/main/java/seng302/controllers/RaceViewController.java index 3b7ee6b5..12069084 100644 --- a/src/main/java/seng302/controllers/RaceViewController.java +++ b/src/main/java/seng302/controllers/RaceViewController.java @@ -309,7 +309,6 @@ public class RaceViewController extends Thread{ // } for (Yacht boat : StreamParser.getBoatsPos().values()) { - System.out.println(boat.getBoatStatus()); if (boat.getBoatStatus() == 3) { // 3 is finish status positionVbox.getChildren().add(new Text(boat.getPosition() + ". " + boat.getShortName() + " (Finished)")); From 4a75c062cee0f6bcb9c479c6338479e186bb6ffe Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Thu, 11 May 2017 15:49:49 +1200 Subject: [PATCH 02/36] Making the course limits change when a new xml packet is received.. #story[889] --- src/main/java/seng302/App.java | 4 +++- .../seng302/controllers/CanvasController.java | 12 ++++++++++++ .../java/seng302/models/parsers/StreamParser.java | 15 +++++++++++++++ src/main/resources/views/RaceView.fxml | 5 +++-- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 1a400afd..960511f8 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -62,7 +62,9 @@ public class App extends Application } //Change the StreamReceiver in this else block to change the default data source. else{ - sr = new StreamReceiver("localhost", 4949, "RaceStream"); +// sr = new StreamReceiver("localhost", 4949, "RaceStream"); +// sr = new StreamReceiver("csse-s302staff.canterbury.ac.nz", 4941, "RaceStream"); + sr = new StreamReceiver("livedata.americascup.com", 4941, "RaceStream"); } sr.start(); diff --git a/src/main/java/seng302/controllers/CanvasController.java b/src/main/java/seng302/controllers/CanvasController.java index 8fc7ed54..bcdcc0c5 100644 --- a/src/main/java/seng302/controllers/CanvasController.java +++ b/src/main/java/seng302/controllers/CanvasController.java @@ -240,6 +240,17 @@ public class CanvasController { } } } + checkForCourseChanges(); + } + + private void checkForCourseChanges() { + if (StreamParser.isNewXmlRecieved()){ + System.out.println("New Canvas found"); + gc.setFill(Color.SKYBLUE); + gc.fillRect(0,0, CANVAS_WIDTH, CANVAS_HEIGHT); + gc.restore(); + addRaceBorder(); + } } private void move(long id, RaceObject raceObject){ @@ -345,6 +356,7 @@ public class CanvasController { * Calculates x and y location for every marker that fits it to the canvas the race will be drawn on. */ private void fitMarksToCanvas() { + StreamParser.isNewXmlRecieved(); findMinMaxPoint(); double minLonToMaxLon = scaleRaceExtremities(); calculateReferencePointLocation(minLonToMaxLon); diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index deea3184..9260ae9e 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -31,6 +31,7 @@ public class StreamParser extends Thread{ public static ConcurrentHashMap> boatPositions = new ConcurrentHashMap<>(); private String threadName; private Thread t; + private static boolean newXmlRecieved = false; private static boolean raceStarted = false; private static XMLParser xmlObject; private static boolean raceFinished = false; @@ -122,6 +123,8 @@ public class StreamParser extends Thread{ extractDisplayMessage(packet); break; case XML_MESSAGE: + System.out.println("XML MESSAGE GOT"); + newXmlRecieved = true; extractXmlMessage(packet); break; case RACE_START_STATUS: @@ -313,6 +316,9 @@ public class StreamParser extends Thread{ if (messageType == 7) { //7 is the boat XML boats = xmlObject.getBoatXML().getCompetingBoats(); } + if (messageType == 6) { //6 is race info xml + newXmlRecieved = true; + } } /** @@ -579,5 +585,14 @@ public class StreamParser extends Thread{ appRunning = false; System.out.println("[CLIENT] Shutting down stream parser"); } + + public static boolean isNewXmlRecieved(){ + if (newXmlRecieved){ + newXmlRecieved = false; + return true; + } else { + return false; + } + } } diff --git a/src/main/resources/views/RaceView.fxml b/src/main/resources/views/RaceView.fxml index 3c148485..8a0c40a5 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -7,6 +7,7 @@ + @@ -35,9 +36,9 @@