mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Working idle sail animation.
Need to work on getting sails to toggle properly. Have the 2 animations almost working but unable to switch between the two. #story[1111]
This commit is contained in:
@@ -97,7 +97,9 @@ public class LobbyController implements Initializable, Observer{
|
|||||||
.addAll((Pane) FXMLLoader.load(getClass().getResource(jfxUrl)));
|
.addAll((Pane) FXMLLoader.load(getClass().getResource(jfxUrl)));
|
||||||
} catch (javafx.fxml.LoadException e) {
|
} catch (javafx.fxml.LoadException e) {
|
||||||
System.out.println("[Controller] FXML load exception");
|
System.out.println("[Controller] FXML load exception");
|
||||||
|
e.printStackTrace();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
||||||
System.out.println("[Controller] IO exception");
|
System.out.println("[Controller] IO exception");
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
// System.out.println("[Controller] Null Pointer Exception");
|
// System.out.println("[Controller] Null Pointer Exception");
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import javafx.scene.shape.Line;
|
|||||||
import javafx.scene.shape.Polygon;
|
import javafx.scene.shape.Polygon;
|
||||||
import javafx.scene.transform.Rotate;
|
import javafx.scene.transform.Rotate;
|
||||||
import seng302.client.ClientPacketParser;
|
import seng302.client.ClientPacketParser;
|
||||||
|
import seng302.gameServer.GameStages;
|
||||||
|
import seng302.gameServer.GameState;
|
||||||
import seng302.models.Yacht;
|
import seng302.models.Yacht;
|
||||||
import seng302.utilities.GeoUtility;
|
import seng302.utilities.GeoUtility;
|
||||||
import seng302.controllers.CanvasController;
|
import seng302.controllers.CanvasController;
|
||||||
@@ -43,6 +45,7 @@ public class BoatGroup extends Group {
|
|||||||
private Group lineGroup = new Group();
|
private Group lineGroup = new Group();
|
||||||
private Polygon boatPoly;
|
private Polygon boatPoly;
|
||||||
private Wake wake;
|
private Wake wake;
|
||||||
|
private Polygon sail;
|
||||||
private Line leftLayLine;
|
private Line leftLayLine;
|
||||||
private Line rightLayline;
|
private Line rightLayline;
|
||||||
private Double distanceTravelled = 0.0;
|
private Double distanceTravelled = 0.0;
|
||||||
@@ -52,6 +55,7 @@ public class BoatGroup extends Group {
|
|||||||
private Color color;
|
private Color color;
|
||||||
private Boolean isSelected = true; //All boats are initialised as selected\
|
private Boolean isSelected = true; //All boats are initialised as selected\
|
||||||
private boolean isPlayer = false;
|
private boolean isPlayer = false;
|
||||||
|
private Double sailState = 0.0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a BoatGroup with the default triangular boat polygon.
|
* Creates a BoatGroup with the default triangular boat polygon.
|
||||||
@@ -105,14 +109,32 @@ public class BoatGroup extends Group {
|
|||||||
boatPoly.setCache(true);
|
boatPoly.setCache(true);
|
||||||
boatPoly.setCacheHint(CacheHint.SPEED);
|
boatPoly.setCacheHint(CacheHint.SPEED);
|
||||||
boatAnnotations = new BoatAnnotations(boat, this.color);
|
boatAnnotations = new BoatAnnotations(boat, this.color);
|
||||||
|
sail = new Polygon(0.0,BOAT_HEIGHT / 4,
|
||||||
|
0.0, BOAT_HEIGHT);
|
||||||
|
animateSail();
|
||||||
|
sail.setStrokeWidth(2.0);
|
||||||
|
sail.setStroke(Color.SILVER);
|
||||||
leftLayLine = new Line();
|
leftLayLine = new Line();
|
||||||
rightLayline = new Line();
|
rightLayline = new Line();
|
||||||
|
|
||||||
wake = new Wake(0, -BOAT_HEIGHT);
|
wake = new Wake(0, -BOAT_HEIGHT);
|
||||||
super.getChildren().addAll(boatPoly, boatAnnotations);
|
super.getChildren().addAll(boatPoly, boatAnnotations, sail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void animateSail(){
|
||||||
|
Double[] points = new Double[100];
|
||||||
|
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) / 50 + BOAT_HEIGHT / 4;
|
||||||
|
}
|
||||||
|
sailState = sailState + Math.PI / 25;
|
||||||
|
sail.getPoints().clear();
|
||||||
|
sail.getPoints().addAll(points);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the javafx objects that will be the in the group by default.
|
* Creates the javafx objects that will be the in the group by default.
|
||||||
*
|
*
|
||||||
@@ -154,6 +176,16 @@ public class BoatGroup extends Group {
|
|||||||
boatPoly.setLayoutY(y);
|
boatPoly.setLayoutY(y);
|
||||||
boatAnnotations.setLayoutX(x);
|
boatAnnotations.setLayoutX(x);
|
||||||
boatAnnotations.setLayoutY(y);
|
boatAnnotations.setLayoutY(y);
|
||||||
|
sail.setLayoutX(x);
|
||||||
|
sail.setLayoutY(y);
|
||||||
|
if (!boat.getSailIn()) {
|
||||||
|
animateSail();
|
||||||
|
} else {
|
||||||
|
sail.getPoints().clear();
|
||||||
|
sail.getPoints().addAll(0.0,BOAT_HEIGHT / 4,
|
||||||
|
0.0, BOAT_HEIGHT);
|
||||||
|
|
||||||
|
}
|
||||||
wake.setLayoutX(x);
|
wake.setLayoutX(x);
|
||||||
wake.setLayoutY(y);
|
wake.setLayoutY(y);
|
||||||
wake.rotate(rotation);
|
wake.rotate(rotation);
|
||||||
@@ -161,6 +193,12 @@ public class BoatGroup extends Group {
|
|||||||
|
|
||||||
private void rotateTo(double rotation) {
|
private void rotateTo(double rotation) {
|
||||||
boatPoly.getTransforms().setAll(new Rotate(rotation));
|
boatPoly.getTransforms().setAll(new Rotate(rotation));
|
||||||
|
//TODO kre39 - Make the sails out angle depend on the facing of the boat
|
||||||
|
if (!boat.getSailIn()) {
|
||||||
|
sail.getTransforms().setAll(new Rotate(GameState.getWindDirection() + 95.0));
|
||||||
|
} else {
|
||||||
|
sail.getTransforms().setAll(new Rotate(GameState.getWindDirection()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ public class Yacht {
|
|||||||
Double trueWindAngle = Math.abs(GameState.getWindDirection() - heading);
|
Double trueWindAngle = Math.abs(GameState.getWindDirection() - heading);
|
||||||
Double boatSpeedInKnots = PolarTable.getBoatSpeed(windSpeedKnots, trueWindAngle);
|
Double boatSpeedInKnots = PolarTable.getBoatSpeed(windSpeedKnots, trueWindAngle);
|
||||||
Double maxBoatSpeed = boatSpeedInKnots / ClientPacketParser.MS_TO_KNOTS * 1000;
|
Double maxBoatSpeed = boatSpeedInKnots / ClientPacketParser.MS_TO_KNOTS * 1000;
|
||||||
|
System.out.println("sailIn = " + sailIn);
|
||||||
if (sailIn && velocity <= maxBoatSpeed && maxBoatSpeed != 0d) {
|
if (sailIn && velocity <= maxBoatSpeed && maxBoatSpeed != 0d) {
|
||||||
|
|
||||||
if (velocity < maxBoatSpeed) {
|
if (velocity < maxBoatSpeed) {
|
||||||
@@ -170,7 +171,8 @@ public class Yacht {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void toggleSailIn() {
|
public void toggleSailIn() {
|
||||||
sailIn = !sailIn;
|
this.sailIn = !sailIn;
|
||||||
|
System.out.println("sailIn = " + sailIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void turnUpwind() {
|
public void turnUpwind() {
|
||||||
@@ -389,6 +391,7 @@ public class Yacht {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getSailIn() {
|
public Boolean getSailIn() {
|
||||||
|
System.out.println("sailIn = " + sailIn);
|
||||||
return sailIn;
|
return sailIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user