From 421ef3c65acc166f823b5ff51795071a7d917bca Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Tue, 8 Aug 2017 19:41:51 +1200 Subject: [PATCH 1/2] Started progress on zooming, can now use z and x keys to zoom into map. Nothing scales correctly asides from the map itself (the boats stay in the same position). #story[1121] --- .../java/seng302/visualiser/GameClient.java | 2 + .../java/seng302/visualiser/GameView.java | 66 +++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 68a3a25a..cf4590ca 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -305,9 +305,11 @@ public class GameClient { break; //TODO Allow a zoom in and zoom out methods case Z: // zoom in + raceView.getGameView().zoomIn(); System.out.println("Zoom in"); break; case X: // zoom out + raceView.getGameView().zoomOut(); System.out.println("Zoom out"); break; } diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index 4e0e67c1..95e1aed0 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -9,10 +9,14 @@ import java.util.Map; import javafx.animation.AnimationTimer; import javafx.application.Platform; import javafx.collections.ObservableList; +import javafx.event.EventHandler; import javafx.geometry.Point2D; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.ScrollEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; @@ -53,6 +57,8 @@ public class GameView extends Pane { private double referencePointX, referencePointY; private double metersPerPixelX, metersPerPixelY; + final double SCALE_DELTA = 1.1; + private Text fpsDisplay = new Text(); private Polygon raceBorder = new CourseBoundary(); @@ -83,6 +89,24 @@ public class GameView extends Pane { private Yacht playerYacht; private double windDir = 0.0; + double scaleFactor = 1; + + public void zoomOut() { + scaleFactor = 0.95; + for (Node child : getChildren()) { + child.setScaleX(child.getScaleX() * scaleFactor); + child.setScaleY(child.getScaleY() * scaleFactor); + } + } + + public void zoomIn() { + scaleFactor = 1.05; + for (Node child : getChildren()) { + child.setScaleX(child.getScaleX() * scaleFactor); + child.setScaleY(child.getScaleY() * scaleFactor); + } + } + private enum ScaleDirection { HORIZONTAL, VERTICAL @@ -98,6 +122,45 @@ public class GameView extends Pane { gameObjects.add(fpsDisplay); gameObjects.add(raceBorder); gameObjects.add(markers); +// +// this.setOnKeyPressed(new EventHandler() { +// @Override public void handle(KeyEvent event) { +// event.consume(); +// switch (event.getCode()) { +// case Z: +// scaleFactor = scaleFactor * 1.2; +// break; +// case X: +// scaleFactor = scaleFactor * 0.8; +// break; +// } +// if (event.getCode() == KeyCode.Z || event.getCode() == KeyCode.X) { +// for (Node child : getChildren()) { +// child.setScaleX(child.getScaleX() * scaleFactor); +// child.setScaleY(child.getScaleY() * scaleFactor); +// } +// } +// } +// }); +// +// this.setOnScroll(new EventHandler() { +// @Override public void handle(ScrollEvent event) { +// event.consume(); +// if (event.getDeltaY() == 0) { +// return; +// } +// +// double scaleFactor = +// (event.getDeltaY() > 0) +// ? SCALE_DELTA +// : 1/SCALE_DELTA; +// for (Node child : getChildren()) { +// child.setScaleX(child.getScaleX() * scaleFactor); +// child.setScaleY(child.getScaleY() * scaleFactor); +// } +// } +// }); + initializeTimer(); } @@ -347,7 +410,9 @@ public class GameView extends Pane { gameObjects.addAll(wakes); gameObjects.addAll(annotationsGroup); gameObjects.addAll(boatObjectGroup); + }); + } private void createAndBindAnnotationBox (Yacht yacht, Paint colour) { @@ -596,5 +661,6 @@ public class GameView extends Pane { annotationsGroup.getChildren().remove(annotations.get(playerYacht)); gameObjects.add(annotations.get(playerYacht)); }); + } } From 9c1fe72f6b6029c199d17673134c28f4611aece4 Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Mon, 14 Aug 2017 13:35:18 +1200 Subject: [PATCH 2/2] Merge and tests fix --- src/test/java/steps/ToggleSailSteps.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/test/java/steps/ToggleSailSteps.java b/src/test/java/steps/ToggleSailSteps.java index 2347c9ce..222f4b3d 100644 --- a/src/test/java/steps/ToggleSailSteps.java +++ b/src/test/java/steps/ToggleSailSteps.java @@ -7,13 +7,11 @@ import org.junit.Assert; import seng302.gameServer.GameStages; import seng302.gameServer.GameState; import seng302.gameServer.MainServerThread; -import seng302.gameServer.server.messages.BoatActionMessage; -import seng302.gameServer.server.messages.BoatActionType; +import seng302.gameServer.server.messages.BoatAction; import seng302.model.Yacht; import seng302.visualiser.ClientToServerThread; import java.util.ArrayList; -import java.util.Collections; /** * Created by kre39 on 7/08/17. @@ -44,11 +42,7 @@ public class ToggleSailSteps { public void the_user_has_pressed(String arg1) throws Throwable { startTime = System.currentTimeMillis(); if (arg1 == "shift") { - if (sailsIn) { - client.sendBoatActionMessage(new BoatActionMessage(BoatActionType.SAILS_OUT)); - } else { - client.sendBoatActionMessage(new BoatActionMessage(BoatActionType.SAILS_IN)); - } + client.sendBoatAction(BoatAction.SAILS_IN); } }