From 4a75c062cee0f6bcb9c479c6338479e186bb6ffe Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Thu, 11 May 2017 15:49:49 +1200 Subject: [PATCH 01/14] 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 @@