Sails can be toggled on the visualiser and the rotate sails button rotates the sail visually. #story[1098]

main
Joseph Gardner 8 years ago
parent 7c5670f8c2
commit f6cdf66bfe

@ -90,6 +90,10 @@ public class Boat {
@Nullable
private ZonedDateTime timeAtLastMark;
/**
* The state of the boats sails. True if sails are out.
*/
private boolean sailsOut = false;
/**
* Constructs a boat object with a given sourceID, name, country/team abbreviation, and polars table.
@ -395,4 +399,11 @@ public class Boat {
this.timeAtLastMark = timeAtLastMark;
}
public void setSailsOut(boolean sailsOut) {
this.sailsOut = sailsOut;
}
public boolean isSailsOut() {
return sailsOut;
}
}

@ -1,5 +1,7 @@
package visualiser.gameController.Keys;
import visualiser.model.ThisBoat;
/**
* Key to toggle the sails
*/
@ -19,7 +21,16 @@ public class SailsToggleKey extends ControlKey {
*/
@Override
public void onAction() {
protocolCode = protocolCode == 2? 3 : 2;
// 2 = Sails in
// 3 = Sails out
if (ThisBoat.getInstance().isSailsOut()) {
protocolCode = 3;
ThisBoat.getInstance().setSailsOut(false);
} else {
protocolCode = 2;
ThisBoat.getInstance().setSailsOut(true);
}
}
@Override

@ -305,8 +305,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
gc.fillPolygon(x, y, 3);
gc.restore();
// TODO: update with current players boat
if (boat.getSourceID() == 125) {
if (boat.getSourceID() == ThisBoat.getInstance().getSourceID()) {
drawSails(boat);
}
}
@ -331,9 +330,9 @@ public class ResizableRaceCanvas extends ResizableCanvas {
gc.save();
// right half of points of sail
if (boatBearing<180) {
if (boatBearing < 180) {
sailImage = sailsRight;
sailRotateAngle = boatBearing * 0.5; // math
sailRotateAngle = boatBearing; // math
xPos -= 1; // right align to boat edge on canvas
// System.out.println("right side -- boat: " + boatBearing +
// "|| rotate: " + sailRotateAngle);
@ -341,12 +340,21 @@ public class ResizableRaceCanvas extends ResizableCanvas {
// left half of points of sail
else {
sailImage = sailsLeft;
sailRotateAngle = -(360 - boatBearing) * 0.5; // math
sailRotateAngle = -(360 - boatBearing); // math
xPos -= 5; // left align to boat edge on canvas
// System.out.println("left side -- boat: " + boatBearing +
// "|| rotate: " + sailRotateAngle);
}
// Change the angle of the sail if the sail is out
if (ThisBoat.getInstance().isSailsOut()) {
if (boatBearing < 180) {
sailRotateAngle -= 90;
} else {
sailRotateAngle += 90;
}
}
// rotate sails based on boats current heading
rotate(sailRotateAngle, boatPos.getX(), boatPos.getY());
gc.drawImage(sailImage, xPos, yPos);

@ -0,0 +1,33 @@
package visualiser.model;
/**
* The properties of the boat currently being controlled by the player. Singleton.
*/
public class ThisBoat {
// TODO Initialise sourceID to the sourceID given by the network
private int sourceID = 125;
private boolean sailsOut = false;
private static ThisBoat instance = new ThisBoat();
private ThisBoat(){}
public static ThisBoat getInstance(){
return instance;
}
public void setSailsOut(boolean sailsOut) {
this.sailsOut = sailsOut;
}
public void setSourceID(int sourceID) {
this.sourceID = sourceID;
}
public boolean isSailsOut() {
return sailsOut;
}
public int getSourceID() {
return sourceID;
}
}
Loading…
Cancel
Save