From 9c60521d00aef3a2b304763a55b21f01dc2c9bd8 Mon Sep 17 00:00:00 2001 From: cir27 Date: Tue, 2 May 2017 16:41:40 +1200 Subject: [PATCH 1/5] Merge branch 'develop' of C:\Users\CJIRWIN\Documents\team-13 with conflicts. --- src/main/java/seng302/App.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 0637d2cc..39ca3e8a 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -5,6 +5,9 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; +import seng302.models.parsers.StreamParser; +import seng302.models.parsers.StreamReceiver; +import seng302.server.ServerThread; public class App extends Application { @@ -18,6 +21,28 @@ public class App extends Application } public static void main(String[] args) { + StreamReceiver sr; + + new ServerThread("Racevision Test Server"); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + +// if (args.length > 1){ +// sr = new StreamReceiver("localhost", 8085, "RaceStream"); +// } +// else{ + sr = new StreamReceiver("csse-s302staff.canterbury.ac.nz", 4941,"RaceStream"); +// sr = new StreamReceiver("livedata.americascup.com", 4941, "RaceStream"); +// sr = new StreamReceiver("localhost", 8085, "RaceStream"); +// } + + sr.start(); + StreamParser streamParser = new StreamParser("StreamParser"); + streamParser.start(); + launch(args); } } From 059c0de1fad98ae93e3afaeef8ffa12231b1dbec Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Sun, 21 May 2017 15:58:17 +1200 Subject: [PATCH 2/5] Quickfix for null pointer in boatObject #pair[ptg19,kre39] --- src/main/java/seng302/models/BoatGroup.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/seng302/models/BoatGroup.java b/src/main/java/seng302/models/BoatGroup.java index 767ca893..f6e4a16b 100644 --- a/src/main/java/seng302/models/BoatGroup.java +++ b/src/main/java/seng302/models/BoatGroup.java @@ -109,9 +109,13 @@ public class BoatGroup extends RaceObject { teamNameObject.setCacheHint(CacheHint.SPEED); velocityObject = new Text(String.valueOf(boat.getVelocity())); DateFormat format = new SimpleDateFormat("mm:ss"); - String timeToNextMark = format + // TODO: 21/05/17 make a nice way of checking for this to be null + estTimeToNextMarkObject = new Text("Next mark: null"); + if (boat.getEstimateTimeAtNextMark() != null) { + String timeToNextMark = format .format(boat.getEstimateTimeAtNextMark() - StreamParser.getCurrentTimeLong()); - estTimeToNextMarkObject = new Text("Next mark: " + timeToNextMark); + estTimeToNextMarkObject = new Text("Next mark: " + timeToNextMark); + } if (boat.getMarkRoundingTime() != null) { String elapsedTime = format .format(StreamParser.getCurrentTimeLong() - boat.getMarkRoundingTime()); @@ -280,9 +284,14 @@ public class BoatGroup extends RaceObject { velocityObject.setText(String.format("%.2f m/s", boat.getVelocity())); DateFormat format = new SimpleDateFormat("mm:ss"); // estimate time to next mark - String timeToNextMark = format - .format(boat.getEstimateTimeAtNextMark() - StreamParser.getCurrentTimeLong()); - estTimeToNextMarkObject.setText("Next mark: " + timeToNextMark); + // TODO: 21/05/17 make a nice way of checking for this to be null + estTimeToNextMarkObject.setText("Next mark: null"); + if (boat.getEstimateTimeAtNextMark() != null) { + String timeToNextMark = format + .format( + boat.getEstimateTimeAtNextMark() - StreamParser.getCurrentTimeLong()); + estTimeToNextMarkObject.setText("Next mark: " + timeToNextMark); + } // elapsed time if (boat.getMarkRoundingTime() != null) { String elapsedTime = format From 68a243725b0de8fb10e1c48a75b6aacd8dd5c72f Mon Sep 17 00:00:00 2001 From: cir27 Date: Mon, 22 May 2017 05:39:36 +1200 Subject: [PATCH 3/5] Fixed a bug where an error was caused when attempting to flip the race around the prime meridian. All x values are now flipped horizontally if the difference between the smallest lon, e.g. -179.5 and the largest e.g. 179.5 is greater than 180. #story[923] #bug --- .../seng302/controllers/CanvasController.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/seng302/controllers/CanvasController.java b/src/main/java/seng302/controllers/CanvasController.java index 9a2a9797..720f89bd 100644 --- a/src/main/java/seng302/controllers/CanvasController.java +++ b/src/main/java/seng302/controllers/CanvasController.java @@ -50,6 +50,7 @@ public class CanvasController { private final int RHS_BUFFER = BUFFER_SIZE + MARK_SIZE / 2; private final int TOP_BUFFER = BUFFER_SIZE; private final int BOT_BUFFER = TOP_BUFFER + MARK_SIZE / 2; + private boolean horizontalInversion = false; private double distanceScaleFactor; private ScaleDirection scaleDirection; @@ -128,7 +129,6 @@ public class CanvasController { } // TODO: 1/05/17 cir27 - Make the RaceObjects update on the actual delay. - elapsedNanos = 1000 / 60; updateRaceObjects(); if (StreamParser.isRaceFinished()) { this.stop(); @@ -386,16 +386,11 @@ public class CanvasController { //If the course is on a point on the earth where longitudes wrap around. Limit minLonMark = sortedPoints.get(0); Limit maxLonMark = sortedPoints.get(sortedPoints.size()-1); - SingleMark thisMinLon = new SingleMark(minLonMark.toString(), minLonMark.getLat(), minLonMark.getLng(), minLonMark.getSeqID()); - SingleMark thisMaxLon = new SingleMark(maxLonMark.toString(), maxLonMark.getLat(), maxLonMark.getLng(), maxLonMark.getSeqID()); - // TODO: 30/03/17 cir27 - Correctly account for longitude wrapping around. - if (thisMaxLon.getLongitude() - thisMinLon.getLongitude() > 180) { - SingleMark temp = thisMinLon; - thisMinLon = thisMaxLon; - thisMaxLon = temp; + minLonPoint = new SingleMark(minLonMark.toString(), minLonMark.getLat(), minLonMark.getLng(), minLonMark.getSeqID()); + minLatPoint = new SingleMark(maxLonMark.toString(), maxLonMark.getLat(), maxLonMark.getLng(), maxLonMark.getSeqID()); + if (maxLonPoint.getLongitude() - minLonPoint.getLongitude() > 180) { + horizontalInversion = true; } - minLonPoint = thisMinLon; - maxLonPoint = thisMaxLon; } /** @@ -426,6 +421,9 @@ public class CanvasController { referencePointX += distanceScaleFactor * Math.sin(referenceAngle) * Mark.calculateDistance(referencePoint, minLonPoint); referencePointX += ((CANVAS_WIDTH - (LHS_BUFFER + RHS_BUFFER)) - (minLonToMaxLon * distanceScaleFactor)) / 2; } + if(horizontalInversion) { + referencePointX = CANVAS_WIDTH - RHS_BUFFER - (referencePointX - LHS_BUFFER); + } } /** @@ -509,6 +507,9 @@ public class CanvasController { xAxisLocation -= (int) Math.round(distanceScaleFactor * Math.cos(angleFromReference) * distanceFromReference); yAxisLocation += (int) Math.round(distanceScaleFactor * Math.sin(angleFromReference) * distanceFromReference); } + if(horizontalInversion) { + xAxisLocation = CANVAS_WIDTH - RHS_BUFFER - (xAxisLocation - LHS_BUFFER); + } return new Point2D(xAxisLocation, yAxisLocation); } From 97f1ccb6c1de5cea8b0fc3f03d8a01fd8563979a Mon Sep 17 00:00:00 2001 From: cir27 Date: Mon, 22 May 2017 05:41:57 +1200 Subject: [PATCH 4/5] Fixed a bug where an error was caused when attempting to flip the race around the prime meridian. All x values are now flipped horizontally if the difference between the smallest lon, e.g. -179.5 and the largest e.g. 179.5 is greater than 180. #story[923] #bug --- src/main/java/seng302/models/Race.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seng302/models/Race.java b/src/main/java/seng302/models/Race.java index e78b602a..f69913a5 100644 --- a/src/main/java/seng302/models/Race.java +++ b/src/main/java/seng302/models/Race.java @@ -152,7 +152,7 @@ public class Race { /** * Set a boat as finished - * @param boat The boat that has finished the race/home/cosc/student/wmu16 + * @param boat The boat that has finished the race */ public void setBoatFinished(Yacht boat){ this.finishingOrder.add(boat); From 80528c9c421362186606dc16e6d37986f85e8c05 Mon Sep 17 00:00:00 2001 From: Calum Date: Mon, 22 May 2017 14:30:31 +1200 Subject: [PATCH 5/5] fixed bug in canvas controller #bug --- src/main/java/seng302/App.java | 3 ++- src/main/java/seng302/controllers/CanvasController.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index afcd3430..1146fa97 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -62,8 +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("livedata.americascup.com", 4941, "RaceStream"); +// sr = new StreamReceiver("csse-s302staff.canterbury.ac.nz", 4941, "RaceStream"); } sr.start(); diff --git a/src/main/java/seng302/controllers/CanvasController.java b/src/main/java/seng302/controllers/CanvasController.java index 720f89bd..1dc751f1 100644 --- a/src/main/java/seng302/controllers/CanvasController.java +++ b/src/main/java/seng302/controllers/CanvasController.java @@ -387,7 +387,7 @@ public class CanvasController { Limit minLonMark = sortedPoints.get(0); Limit maxLonMark = sortedPoints.get(sortedPoints.size()-1); minLonPoint = new SingleMark(minLonMark.toString(), minLonMark.getLat(), minLonMark.getLng(), minLonMark.getSeqID()); - minLatPoint = new SingleMark(maxLonMark.toString(), maxLonMark.getLat(), maxLonMark.getLng(), maxLonMark.getSeqID()); + maxLonPoint = new SingleMark(maxLonMark.toString(), maxLonMark.getLat(), maxLonMark.getLng(), maxLonMark.getSeqID()); if (maxLonPoint.getLongitude() - minLonPoint.getLongitude() > 180) { horizontalInversion = true; }