mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Merge remote-tracking branch 'origin/develop' into 1293_PowerUps
# Conflicts: # src/main/java/seng302/visualiser/GameView3D.java
This commit is contained in:
@@ -6,6 +6,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
import java.util.Timer;
|
||||
import javafx.beans.property.ReadOnlyDoubleProperty;
|
||||
import javafx.beans.property.ReadOnlyDoubleWrapper;
|
||||
import javafx.beans.property.ReadOnlyIntegerProperty;
|
||||
@@ -20,6 +21,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import seng302.model.token.TokenType;
|
||||
import seng302.visualiser.fxObjects.assets_3D.BoatMeshType;
|
||||
import seng302.visualiser.fxObjects.assets_3D.BoatObject;
|
||||
|
||||
/**
|
||||
* Yacht class for the racing boat. <p> Class created to store more variables (eg. boat statuses)
|
||||
@@ -82,6 +84,10 @@ public class ClientYacht extends Observable {
|
||||
private Integer boatStatus;
|
||||
private Double currentVelocity;
|
||||
|
||||
Timer t;
|
||||
|
||||
private BoatObject boatObject;
|
||||
|
||||
private List<YachtLocationListener> locationListeners = new ArrayList<>();
|
||||
private List<MarkRoundingListener> markRoundingListeners = new ArrayList<>();
|
||||
private List<PowerUpListener> powerUpListeners = new ArrayList<>();
|
||||
@@ -92,6 +98,7 @@ public class ClientYacht extends Observable {
|
||||
private ReadOnlyLongWrapper timeTillNextProperty = new ReadOnlyLongWrapper();
|
||||
private ReadOnlyLongWrapper timeSinceLastMarkProperty = new ReadOnlyLongWrapper();
|
||||
private ReadOnlyIntegerWrapper placingProperty = new ReadOnlyIntegerWrapper();
|
||||
private ReadOnlyDoubleWrapper headingProperty = new ReadOnlyDoubleWrapper();
|
||||
private Color colour;
|
||||
|
||||
public ClientYacht(BoatMeshType boatType, Integer sourceId, String hullID, String shortName,
|
||||
@@ -104,6 +111,7 @@ public class ClientYacht extends Observable {
|
||||
this.country = country;
|
||||
this.location = new GeoPoint(57.670341, 11.826856);
|
||||
this.heading = 120.0; //In degrees
|
||||
this.headingProperty.set(this.heading);
|
||||
this.currentVelocity = 0d;
|
||||
this.boatStatus = 1;
|
||||
this.colour = Color.rgb(0, 0, 0, 1.0);
|
||||
@@ -277,6 +285,7 @@ public class ClientYacht extends Observable {
|
||||
|
||||
public void setHeading(Double heading) {
|
||||
this.heading = heading;
|
||||
setHeadingProperty();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -308,10 +317,10 @@ public class ClientYacht extends Observable {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void updateLocation(double lat, double lng, double heading, double velocity) {
|
||||
setLocation(lat, lng);
|
||||
this.heading = heading;
|
||||
setHeadingProperty();
|
||||
this.currentVelocity = velocity;
|
||||
updateVelocityProperty(velocity);
|
||||
for (YachtLocationListener yll : locationListeners) {
|
||||
@@ -319,6 +328,10 @@ public class ClientYacht extends Observable {
|
||||
}
|
||||
}
|
||||
|
||||
private void setHeadingProperty() {
|
||||
headingProperty.set(heading);
|
||||
}
|
||||
|
||||
public void addLocationListener(YachtLocationListener listener) {
|
||||
locationListeners.add(listener);
|
||||
}
|
||||
@@ -359,4 +372,17 @@ public class ClientYacht extends Observable {
|
||||
public Double getCurrentVelocity() {
|
||||
return currentVelocity;
|
||||
}
|
||||
|
||||
public void setBoatObject(BoatObject newBoatObject) {
|
||||
this.boatObject = newBoatObject;
|
||||
}
|
||||
|
||||
public BoatObject getBoatObject() {
|
||||
return this.boatObject;
|
||||
}
|
||||
|
||||
public ReadOnlyDoubleWrapper getHeadingProperty() {
|
||||
return headingProperty;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,7 +30,12 @@ public class GameKeyBind {
|
||||
keys.add(KeyCode.ENTER);
|
||||
keys.add(KeyCode.PAGE_UP);
|
||||
keys.add(KeyCode.PAGE_DOWN);
|
||||
for (int i = 0; i < 7; i++) {
|
||||
keys.add(KeyCode.F1);
|
||||
keys.add(KeyCode.D);
|
||||
keys.add(KeyCode.A);
|
||||
keys.add(KeyCode.W);
|
||||
keys.add(KeyCode.S);
|
||||
for (int i = 0; i < 12; i++) {
|
||||
actionToKeyMap.put(KeyAction.getType(i + 1), keys.get(i));
|
||||
keyToActionMap.put(keys.get(i), KeyAction.getType(i + 1));
|
||||
}
|
||||
@@ -47,6 +52,10 @@ public class GameKeyBind {
|
||||
return instance.actionToKeyMap.get(keyAction);
|
||||
}
|
||||
|
||||
public KeyAction getKeyAction(KeyCode keyCode) {
|
||||
return instance.keyToActionMap.get(keyCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Binds a key to a key action
|
||||
*
|
||||
|
||||
@@ -10,7 +10,12 @@ public enum KeyAction {
|
||||
SAILS_STATE(4),
|
||||
TACK_GYBE(5),
|
||||
UPWIND(6),
|
||||
DOWNWIND(7);
|
||||
DOWNWIND(7),
|
||||
VIEW(8),
|
||||
RIGHT(9),
|
||||
LEFT(10),
|
||||
FORWARD(11),
|
||||
BACKWARD(12);
|
||||
|
||||
private final int type;
|
||||
private static final Map<Integer, KeyAction> intToTypeMap = new HashMap<>();
|
||||
|
||||
@@ -160,11 +160,11 @@ public class ServerYacht {
|
||||
/**
|
||||
* Enables the boats auto pilot feature, which will move the boat towards a given heading.
|
||||
*
|
||||
* @param thisHeading The heading to move the boat towards.
|
||||
* @param newHeading The heading to move the boat towards.
|
||||
*/
|
||||
private void setAutoPilot(Double thisHeading) {
|
||||
private void setAutoPilot(Double newHeading) {
|
||||
isAuto = true;
|
||||
autoHeading = thisHeading;
|
||||
autoHeading = newHeading;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -182,8 +182,9 @@ public class ServerYacht {
|
||||
if (isAuto) {
|
||||
turnTowardsHeading(autoHeading);
|
||||
if (Math.abs(heading - autoHeading)
|
||||
<= turnStep) { //Cancel when within 1 turn step of target.
|
||||
<= turnStep*1.5) {
|
||||
isAuto = false;
|
||||
setHeading(autoHeading);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,7 +270,7 @@ public class ServerYacht {
|
||||
|
||||
// Take optimal heading and turn into a boat heading rather than a wind heading.
|
||||
optimalHeading =
|
||||
optimalHeading + GameState.getWindDirection();
|
||||
(optimalHeading + GameState.getWindDirection()) % 360;
|
||||
|
||||
setAutoPilot(optimalHeading);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user