From 073bcaa4a34e2c11b46cd2f30e6bbbea47203558 Mon Sep 17 00:00:00 2001 From: David Wu Date: Sun, 26 Mar 2017 18:39:23 +1300 Subject: [PATCH] Added checkbox to change visibility of annotation to GUI -Checkbox is used to toggle the text displayed beside boats -Race Clock is now scaled using the scale factor #story [23] --- .../java/seng302/Controllers/RaceController.java | 9 +++++++++ src/main/java/seng302/Model/Race.java | 9 +++++---- .../java/seng302/Model/ResizableRaceCanvas.java | 15 ++++++++++++++- src/main/resources/scenes/racepane.fxml | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index fc7baceb..066a4e44 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -39,6 +39,8 @@ public class RaceController extends Controller{ @FXML CheckBox showFPS; + @FXML + public CheckBox showAnno; @FXML Label timer; @@ -152,6 +154,13 @@ public class RaceController extends Controller{ } }); + showAnno.selectedProperty().addListener(new ChangeListener() { + public void changed(ObservableValue ov, + Boolean old_val, Boolean new_val) { + raceMap.toggleAnno(); + } + }); + new Thread((race)).start(); } diff --git a/src/main/java/seng302/Model/Race.java b/src/main/java/seng302/Model/Race.java index 839b0421..b9b90ba4 100644 --- a/src/main/java/seng302/Model/Race.java +++ b/src/main/java/seng302/Model/Race.java @@ -96,7 +96,7 @@ public abstract class Race implements Runnable { System.out.println("===================="); for (int i = 0; i < startingBoats.size(); i++) { if (startingBoats.get(i) != null) { - System.out.println(i + 1 + ". " + startingBoats.get(i).toString() + ", Speed: " + System.out.println(i + 1 + ". " + startingBoats.get(i).getName() + ", Speed: " + Math.round(startingBoats.get(i).getVelocity() * 1.94384) + "kn"); startingBoats.get(i).setCurrentLeg(legs.get(0)); } @@ -117,6 +117,7 @@ public abstract class Race implements Runnable { long timeLoopEnded; while (currentTime <= startTime) { + if (controller != null) controller.updateMap(startingBoats); timeLeft = startTime - currentTime; currentTimeInSeconds = timeLeft / 1000; minutes = currentTimeInSeconds / 60; @@ -146,7 +147,7 @@ public abstract class Race implements Runnable { long remainingSeconds; long hours; - currentTimeInSeconds = totalTimeElapsed / 1000; + currentTimeInSeconds = (totalTimeElapsed / 1000) * scaleFactor; minutes = currentTimeInSeconds / 60; remainingSeconds = currentTimeInSeconds % 60; hours = minutes / 60; @@ -186,7 +187,7 @@ public abstract class Race implements Runnable { /*long timeLoopStarted; long timeLoopEnded; int fps = 0;*/ - + if (controller != null) controller.updateMap(startingBoats); if (boatsFinished < startingBoats.size()) { //timeLoopStarted = System.currentTimeMillis(); totalTimeElapsed = System.currentTimeMillis() - timeRaceStarted; @@ -198,7 +199,7 @@ public abstract class Race implements Runnable { } } - if (controller != null) controller.updateMap(startingBoats); + //if (controller != null) controller.updateMap(startingBoats); if (timerEnabled) updateTime(calcTimer()); } diff --git a/src/main/java/seng302/Model/ResizableRaceCanvas.java b/src/main/java/seng302/Model/ResizableRaceCanvas.java index f5be9774..5021774a 100644 --- a/src/main/java/seng302/Model/ResizableRaceCanvas.java +++ b/src/main/java/seng302/Model/ResizableRaceCanvas.java @@ -1,12 +1,14 @@ package seng302.Model; +import javafx.application.Platform; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.transform.Rotate; import seng302.Constants; +import seng302.Controllers.RaceController; import seng302.GPSCoordinate; import seng302.GraphCoordinate; import seng302.RaceMap; @@ -25,6 +27,8 @@ public class ResizableRaceCanvas extends Canvas { private GraphicsContext gc; private RaceMap map; private BoatInRace[] boats; + private RaceController controller; + private boolean raceAnno = true; /** * Sets the boats that are to be displayed in this race. @@ -191,7 +195,8 @@ public class ResizableRaceCanvas extends Canvas { if (boat != null) { // System.out.print("Drawing Boat At: " + boat.getCurrentPosition()); displayMark(this.map.convertGPS(boat.getCurrentPosition()), boat.getColour()); - displayText(boat.getAbbrev(), boat.getVelocity(), this.map.convertGPS(boat.getCurrentPosition())); + if (raceAnno){ + displayText(boat.getAbbrev(), boat.getVelocity(), this.map.convertGPS(boat.getCurrentPosition()));} } } } @@ -213,6 +218,14 @@ public class ResizableRaceCanvas extends Canvas { displayPoint(graphCoordinate, colour); } + public void toggleAnno(){ + if (raceAnno){ + raceAnno = false; + } else { + raceAnno = true; + } + } + /** * Set the Canvas to resizable. * diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml index 34f6d10b..46c4ee89 100644 --- a/src/main/resources/scenes/racepane.fxml +++ b/src/main/resources/scenes/racepane.fxml @@ -70,6 +70,7 @@ +