diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index fcaf8dec..fc7baceb 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -2,15 +2,12 @@ package seng302.Controllers; import javafx.beans.property.ReadOnlyObjectWrapper; +import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.event.EventHandler; import javafx.fxml.FXML; -import javafx.scene.control.Label; -import javafx.scene.control.SplitPane; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TitledPane; +import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; @@ -39,6 +36,9 @@ public class RaceController extends Controller{ @FXML SplitPane ongoingRacePane; + @FXML + CheckBox showFPS; + @FXML Label timer; @@ -116,6 +116,7 @@ public class RaceController extends Controller{ } + /** * Initializes and runs the race, based on the user's chosen scale factor * Currently uses an example racecourse @@ -125,6 +126,7 @@ public class RaceController extends Controller{ private void startRace(int scaleFactor) { BoatInRace[] boats = generateAC35Competitors(); raceMap = new ResizableRaceCanvas(); + raceMap.setMouseTransparent(true); raceMap.widthProperty().bind(canvasBase.widthProperty()); raceMap.heightProperty().bind(canvasBase.heightProperty()); raceMap.setBoats(boats); @@ -138,6 +140,17 @@ public class RaceController extends Controller{ ArrayList legs = generateBermudaCourseLegs(); ConstantVelocityRace race = new ConstantVelocityRace(boats, legs, this, scaleFactor); + showFPS.setVisible(true); + showFPS.selectedProperty().addListener(new ChangeListener() { + public void changed(ObservableValue ov, + Boolean old_val, Boolean new_val) { + if (showFPS.isSelected()){ + FPS.setVisible(true); + } else { + FPS.setVisible(false); + } + } + }); new Thread((race)).start(); } diff --git a/src/main/java/seng302/Model/ResizableRaceCanvas.java b/src/main/java/seng302/Model/ResizableRaceCanvas.java index fb9b65c9..f5be9774 100644 --- a/src/main/java/seng302/Model/ResizableRaceCanvas.java +++ b/src/main/java/seng302/Model/ResizableRaceCanvas.java @@ -35,6 +35,7 @@ public class ResizableRaceCanvas extends Canvas { this.boats = boats; } + public ResizableRaceCanvas(RaceMap map) { this.map = map; gc = this.getGraphicsContext2D(); @@ -160,7 +161,6 @@ public class ResizableRaceCanvas extends Canvas { gc.clearRect(0, 0, width, height); //System.out.println("Race Map Canvas Width: "+ width + ", Height:" + height); this.map = new RaceMap(32.278, -64.863, 32.320989, -64.821, (int) width, (int) height); - if (map == null) { return; } @@ -244,4 +244,5 @@ public class ResizableRaceCanvas extends Canvas { public double prefHeight(double height) { return getHeight(); } + } diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml index 84b21769..34f6d10b 100644 --- a/src/main/resources/scenes/racepane.fxml +++ b/src/main/resources/scenes/racepane.fxml @@ -1,89 +1,89 @@ + + - + + - - - - - + + + + + - - - - - + + + + + - + - + -