diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index 99a49021..d53bef04 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -11,6 +11,8 @@ import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.geometry.Point2D; import javafx.scene.Group; @@ -26,10 +28,8 @@ import javafx.scene.shape.Circle; import javafx.scene.shape.Polygon; import javafx.scene.text.Text; import javafx.util.Duration; -import seng302.model.ClientYacht; import seng302.gameServer.messages.RoundingSide; import seng302.model.ClientYacht; -import seng302.model.Colors; import seng302.model.GeoPoint; import seng302.model.Limit; import seng302.model.mark.CompoundMark; @@ -142,6 +142,55 @@ public class GameView extends Pane { gameObjects.add(raceBorder); gameObjects.add(markers); initializeTimer(); + + // DEBUG USE + gameObjects.add(new Circle(0, 0, 10, Color.RED)); + gameObjects.add(new Circle(0, 960, 10, Color.RED)); + gameObjects.add(new Circle(1280, 960, 10, Color.RED)); + gameObjects.add(new Circle(1280, 0, 10, Color.RED)); + // -------- + + this.widthProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, Number oldValue, + Number newValue) { + scaleFactor = (newValue.doubleValue() - 180) / canvasWidth; + double maxVertical = 960 * scaleFactor; + + if (oldValue.doubleValue() != 0.0 && maxVertical < getScene().getHeight()) { + setScaleX(scaleFactor); + setScaleY(scaleFactor); + setTranslateX(0 - ((1 - scaleFactor) * oldValue.doubleValue() / 2)); + setTranslateY(0 - ((1 - scaleFactor) * getScene().getHeight() / 2)); + System.out.println("Width: " + newValue); + System.out.println("Scale X: " + getScaleX()); + System.out.println("Transition X: " + getTranslateX()); + System.out.println("Get Height: " + getScene().getHeight()); + System.out.println("Get Width: " + getScene().getWidth()); + } + } + }); + + this.heightProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, Number oldValue, + Number newValue) { + scaleFactor = (newValue.doubleValue() - 40) / canvasHeight; + double maxHorizontal = 1530 * scaleFactor; + + if (oldValue.doubleValue() != 0.0 && maxHorizontal < getScene().getWidth()) { + setScaleX(scaleFactor); + setScaleY(scaleFactor); + setTranslateX(0 - ((1 - scaleFactor) * getScene().getWidth() / 2)); + setTranslateY(0 - ((1 - scaleFactor) * oldValue.doubleValue() / 2)); + System.out.println("Height: " + newValue); + System.out.println("Scale Y: " + getScaleY()); + System.out.println("Transition Y: " + getTranslateY()); + System.out.println("Get Height: " + getScene().getHeight()); + System.out.println("Get Width: " + getScene().getWidth()); + } + } + }); } private void initializeTimer() { @@ -440,7 +489,9 @@ public class GameView extends Pane { * Enables zoom. Has to be called after this is added to a scene. */ public void enableZoom () { + System.out.println("enable zoom"); if (this.getScene() != null) { + System.out.println("can zoom"); this.getScene().addEventHandler(KeyEvent.KEY_PRESSED, (event) -> { if (event.getCode() == KeyCode.Z) { zoomIn(); diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index a7cd9718..7a16db92 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -25,7 +25,7 @@ import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.ComboBox; import javafx.scene.control.Slider; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; @@ -64,7 +64,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel @FXML private Text timerLabel; @FXML - private AnchorPane contentAnchorPane; + private GridPane contentAnchorPane; @FXML private Text windArrowText, windDirectionText; @FXML diff --git a/src/main/resources/views/RaceView.fxml b/src/main/resources/views/RaceView.fxml index d00f0099..e32417aa 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -24,83 +24,137 @@ - - - - - - - - - - - - - - - - - - - - - - -