- Horizontal and vertical resizing works fine now.
- Issue: Have to implement maximum horizontal and vertical scaling.

#story[1248]
This commit is contained in:
Zhi You Tan
2017-09-09 03:14:10 +12:00
parent 4e69157c09
commit f66ef3c208
2 changed files with 37 additions and 30 deletions
+33 -26
View File
@@ -27,6 +27,7 @@ import javafx.scene.paint.Paint;
import javafx.scene.shape.Circle; import javafx.scene.shape.Circle;
import javafx.scene.shape.Polygon; import javafx.scene.shape.Polygon;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import javafx.scene.transform.Scale;
import javafx.util.Duration; import javafx.util.Duration;
import seng302.gameServer.messages.RoundingSide; import seng302.gameServer.messages.RoundingSide;
import seng302.model.ClientYacht; import seng302.model.ClientYacht;
@@ -150,24 +151,28 @@ public class GameView extends Pane {
gameObjects.add(new Circle(1280, 0, 10, Color.RED)); gameObjects.add(new Circle(1280, 0, 10, Color.RED));
// -------- // --------
double RATIO = getWidth() / getHeight();
this.widthProperty().addListener(new ChangeListener<Number>() { this.widthProperty().addListener(new ChangeListener<Number>() {
@Override @Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, public void changed(ObservableValue<? extends Number> observable, Number oldValue,
Number newValue) { Number newValue) {
scaleFactor = (newValue.doubleValue() - 180) / canvasWidth; scaleFactor = getWidth() / getHeight() > RATIO
double maxVertical = 960 * scaleFactor; ? getHeight() / canvasHeight
: getWidth() / canvasWidth;
if (oldValue.doubleValue() != 0.0 && maxVertical < getScene().getHeight()) { Scale scale = new Scale(scaleFactor, scaleFactor, 0, 0);
setScaleX(scaleFactor); getTransforms().remove(0, getTransforms().size());
setScaleY(scaleFactor); getTransforms().add(scale);
setTranslateX(0 - ((1 - scaleFactor) * oldValue.doubleValue() / 2));
setTranslateY(0 - ((1 - scaleFactor) * getScene().getHeight() / 2)); setPrefWidth(getWidth() / scaleFactor);
System.out.println("Width: " + newValue); setPrefHeight(getHeight() / scaleFactor);
System.out.println("Scale X: " + getScaleX());
System.out.println("Transition X: " + getTranslateX()); System.out.println("Width: " + newValue);
System.out.println("Get Height: " + getScene().getHeight()); System.out.println("Scale X: " + getScaleX());
System.out.println("Get Width: " + getScene().getWidth()); System.out.println("Transition X: " + getTranslateX());
} System.out.println("Get Height: " + getScene().getHeight());
System.out.println("Get Width: " + getScene().getWidth());
} }
}); });
@@ -175,20 +180,22 @@ public class GameView extends Pane {
@Override @Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, public void changed(ObservableValue<? extends Number> observable, Number oldValue,
Number newValue) { Number newValue) {
scaleFactor = (newValue.doubleValue() - 40) / canvasHeight; scaleFactor = getWidth() / getHeight() > RATIO
double maxHorizontal = 1530 * scaleFactor; ? getWidth() / canvasWidth
: getHeight() / canvasHeight;
if (oldValue.doubleValue() != 0.0 && maxHorizontal < getScene().getWidth()) { Scale scale = new Scale(scaleFactor, scaleFactor, 0, 0);
setScaleX(scaleFactor); getTransforms().remove(0, getTransforms().size());
setScaleY(scaleFactor); getTransforms().add(scale);
setTranslateX(0 - ((1 - scaleFactor) * getScene().getWidth() / 2));
setTranslateY(0 - ((1 - scaleFactor) * oldValue.doubleValue() / 2)); setPrefWidth(getWidth() / scaleFactor);
System.out.println("Height: " + newValue); setPrefHeight(getHeight() / scaleFactor);
System.out.println("Scale Y: " + getScaleY());
System.out.println("Transition Y: " + getTranslateY()); System.out.println("Height: " + newValue);
System.out.println("Get Height: " + getScene().getHeight()); System.out.println("Scale Y: " + getScaleY());
System.out.println("Get Width: " + getScene().getWidth()); System.out.println("Transition Y: " + getTranslateY());
} System.out.println("Get Height: " + getScene().getHeight());
System.out.println("Get Width: " + getScene().getWidth());
} }
}); });
} }
@@ -135,10 +135,10 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
gameView = new GameView(); gameView = new GameView();
gameView.setFrameRateFXText(fpsDisplay); gameView.setFrameRateFXText(fpsDisplay);
Platform.runLater(() -> contentAnchorPane.getChildren().add(0, gameView)); Platform.runLater(() -> contentAnchorPane.getChildren().add(0, gameView));
gameView.setBoats(new ArrayList<>(participants.values())); gameView.setBoats(new ArrayList<>(participants.values()));
gameView.updateBorder(raceData.getCourseLimit()); gameView.updateBorder(raceData.getCourseLimit());
gameView.updateCourse( gameView.updateCourse(
new ArrayList<>(raceData.getCompoundMarks().values()), raceData.getMarkSequence() new ArrayList<>(raceData.getCompoundMarks().values()), raceData.getMarkSequence()
); );
gameView.enableZoom(); gameView.enableZoom();
gameView.setBoatAsPlayer(player); gameView.setBoatAsPlayer(player);