From c7857872cea01b7b89998a1ddc833196eb8c1489 Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Mon, 7 Aug 2017 15:24:01 +1200 Subject: [PATCH] Luffing sails animation working correctly, working on sailsin animation now. #story[1111] #pair[kre39,ptg19] --- .../java/seng302/visualiser/GameClient.java | 3 +++ .../java/seng302/visualiser/GameView.java | 9 ++++++- .../visualiser/fxObjects/BoatObject.java | 25 +++++++++++++------ src/main/resources/config/config.xml | 2 +- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 35b05615..24cd3aaa 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -250,6 +250,9 @@ public class GameClient { private void processRaceStatusUpdate(RaceStatusData data) { if (allXMLReceived()) { raceState.updateState(data); + if (raceView != null) { + raceView.getGameView().setWindDir(raceState.getWindDirection()); + } for (long[] boatData : data.getBoatData()) { Yacht yacht = allBoatsMap.get((int) boatData[0]); yacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]); diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index 45abc37a..4e0e67c1 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -81,6 +81,7 @@ public class GameView extends Pane { private int frameTimeIndex = 0; private boolean arrayFilled = false; private Yacht playerYacht; + private double windDir = 0.0; private enum ScaleDirection { HORIZONTAL, @@ -328,7 +329,7 @@ public class GameView extends Pane { yacht.addLocationListener((boat, lat, lon, heading, velocity, sailIn) ->{ BoatObject bo = boatObjects.get(boat); Point2D p2d = findScaledXY(lat, lon); - bo.moveTo(p2d.getX(), p2d.getY(), heading, velocity, sailIn, 95.0); + bo.moveTo(p2d.getX(), p2d.getY(), heading, velocity, sailIn, windDir); // annotations.get(boat).setLayoutX(p2d.getX()); // annotations.get(boat).setLayoutY(p2d.getY()); // annotations.get(boat).setLocation(100d, 100d); @@ -566,6 +567,12 @@ public class GameView extends Pane { timer.stop(); } + + public void setWindDir(double windDir) { + this.windDir = windDir; + } + + public void startRace () { timer.start(); } diff --git a/src/main/java/seng302/visualiser/fxObjects/BoatObject.java b/src/main/java/seng302/visualiser/fxObjects/BoatObject.java index 2527fca1..10830cbb 100644 --- a/src/main/java/seng302/visualiser/fxObjects/BoatObject.java +++ b/src/main/java/seng302/visualiser/fxObjects/BoatObject.java @@ -131,8 +131,8 @@ public class BoatObject extends Group { boatPoly.setLayoutY(y); if (sailIn) { sail.getPoints().clear(); - sail.getPoints().addAll(0.0,BOAT_HEIGHT / 4, - 0.0, BOAT_HEIGHT); +// sail.getPoints().addAll(0.0, 0.0, 4.0, 1.5, 8.0, 3.0, 12.0, 3.5, 16.0, 3.0, 20.0, 1.5, 24.0, 0.0); + sail.getPoints().addAll(0.0, 0.0, 24.0, 0.0); sail.setLayoutX(x); sail.setLayoutY(y); } else { @@ -167,21 +167,30 @@ public class BoatObject extends Group { private void rotateTo(double rotation, boolean sailsIn, double windDir) { boatPoly.getTransforms().setAll(new Rotate(rotation)); if (sailsIn) { - sail.getTransforms().setAll(new Rotate(95.0)); + sail.getTransforms().setAll(new Rotate(windDir + 90)); + + + } else { - sail.getTransforms().setAll(new Rotate(90.0)); + sail.getTransforms().setAll(new Rotate(windDir)); } } + + private void animateSail(){ - Double[] points = new Double[100]; + Double[] points = new Double[200]; + double amplitude = 2.0; + double period = 10; for (int i = 0; i < 50; i++) { - points[i * 2] = 5 * Math.sin(((Math.PI * i) / 25 + sailState)); - points[i * 2 + 1] = (BOAT_HEIGHT * i) / 25 + BOAT_HEIGHT / 4; + points[i * 2] = amplitude * Math.sin(((Math.PI * i) / period + sailState)); + points[i * 2 + 1] = (BOAT_HEIGHT * i) / BOAT_HEIGHT / 2; + points[199 - (i * 2)] = (BOAT_HEIGHT * i) / BOAT_HEIGHT / 2; + points[199 - (i * 2 + 1)] = amplitude * Math.sin(((Math.PI * i) / period + sailState)); } if (sailState == - 2 * Math.PI) { sailState = 0; } else { - sailState = sailState - Math.PI / 10; + sailState = sailState - Math.PI / 5; } sail.getPoints().clear(); sail.getPoints().addAll(points); diff --git a/src/main/resources/config/config.xml b/src/main/resources/config/config.xml index b5c90704..4f002974 100644 --- a/src/main/resources/config/config.xml +++ b/src/main/resources/config/config.xml @@ -4,6 +4,6 @@ AC35 6 10.0 - 135 + 135