mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
The random token now has a 50% chance of causing your boat to have a speed penalty
#story[1293]
This commit is contained in:
@@ -78,10 +78,11 @@ public class GameState implements Runnable {
|
|||||||
private static final Double COLLISION_VELOCITY_PENALTY = 0.3;
|
private static final Double COLLISION_VELOCITY_PENALTY = 0.3;
|
||||||
|
|
||||||
//Powerup Constants
|
//Powerup Constants
|
||||||
public static final Integer VELOCITY_BOOST_MULTIPLIER = 2;
|
public static final Double VELOCITY_BOOST_MULTIPLIER = 2d;
|
||||||
public static final Integer HANDLING_BOOST_MULTIPLIER = 2;
|
public static final Integer HANDLING_BOOST_MULTIPLIER = 2;
|
||||||
|
private static final Double BAD_RANDOM_SPEED_PENALTY = 0.3;
|
||||||
public static final Long BUMPER_DISABLE_TIME = 5_000L;
|
public static final Long BUMPER_DISABLE_TIME = 5_000L;
|
||||||
private static final Long TOKEN_SPAWN_TIME = 15_000L;
|
private static final Long TOKEN_SPAWN_TIME = 30_000L;
|
||||||
|
|
||||||
private static Long previousUpdateTime;
|
private static Long previousUpdateTime;
|
||||||
public static Double windDirection;
|
public static Double windDirection;
|
||||||
@@ -383,7 +384,7 @@ public class GameState implements Runnable {
|
|||||||
//Get a random token location with random type
|
//Get a random token location with random type
|
||||||
Token token = allTokens.get(random.nextInt(allTokens.size()));
|
Token token = allTokens.get(random.nextInt(allTokens.size()));
|
||||||
token.assignRandomType();
|
token.assignRandomType();
|
||||||
// token.assignType(TokenType.WIND_WALKER);
|
// token.assignType(TokenType.RANDOM);
|
||||||
|
|
||||||
logger.debug("Spawned token of type " + token.getTokenType());
|
logger.debug("Spawned token of type " + token.getTokenType());
|
||||||
|
|
||||||
@@ -430,7 +431,12 @@ public class GameState implements Runnable {
|
|||||||
* @param yacht The yacht to perform token checks on
|
* @param yacht The yacht to perform token checks on
|
||||||
*/
|
*/
|
||||||
private void preformTokenUpdates(ServerYacht yacht) {
|
private void preformTokenUpdates(ServerYacht yacht) {
|
||||||
checkTokenPickUp(yacht);
|
Token collidedToken = checkTokenPickUp(yacht);
|
||||||
|
if (collidedToken != null) {
|
||||||
|
tokensInPlay.remove(collidedToken);
|
||||||
|
powerUpYacht(yacht, collidedToken);
|
||||||
|
}
|
||||||
|
|
||||||
checkPowerUpTimeout(yacht);
|
checkPowerUpTimeout(yacht);
|
||||||
TokenType powerUp = yacht.getPowerUp();
|
TokenType powerUp = yacht.getPowerUp();
|
||||||
|
|
||||||
@@ -442,7 +448,6 @@ public class GameState implements Runnable {
|
|||||||
case BUMPER:
|
case BUMPER:
|
||||||
ServerYacht collidedYacht = checkYachtCollision(yacht, true);
|
ServerYacht collidedYacht = checkYachtCollision(yacht, true);
|
||||||
if (collidedYacht != null) {
|
if (collidedYacht != null) {
|
||||||
System.out.println("WE OUT HERE");
|
|
||||||
yacht.powerDown();
|
yacht.powerDown();
|
||||||
boatTempShutDown(collidedYacht);
|
boatTempShutDown(collidedYacht);
|
||||||
notifyMessageListeners(MessageFactory.makePowerDownMessage(yacht));
|
notifyMessageListeners(MessageFactory.makePowerDownMessage(yacht));
|
||||||
@@ -450,10 +455,36 @@ public class GameState implements Runnable {
|
|||||||
MessageFactory.makeStatusEffectMessage(collidedYacht, powerUp));
|
MessageFactory.makeStatusEffectMessage(collidedYacht, powerUp));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RANDOM:
|
||||||
|
yacht.setPowerUpSpeedMultiplier(BAD_RANDOM_SPEED_PENALTY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Powers up a yacht with the given token type.
|
||||||
|
*
|
||||||
|
* @param yacht The yacht to be powered up
|
||||||
|
* @param collidedToken The token which this yacht collided with
|
||||||
|
*/
|
||||||
|
private void powerUpYacht(ServerYacht yacht, Token collidedToken) {
|
||||||
|
//The random token has a 50% chance of becoming another token else becoming a speed detriment!
|
||||||
|
if (collidedToken.getTokenType() == TokenType.RANDOM && new Random().nextBoolean()) {
|
||||||
|
collidedToken.realiseRandom();
|
||||||
|
}
|
||||||
|
|
||||||
|
yacht.powerUp(collidedToken.getTokenType());
|
||||||
|
String logMessage =
|
||||||
|
yacht.getBoatName() + " has picked up a " + collidedToken.getTokenType().getName()
|
||||||
|
+ " token";
|
||||||
|
notifyMessageListeners(MessageFactory.makeChatterMessage(yacht.getSourceId(), logMessage));
|
||||||
|
notifyMessageListeners(MessageFactory.getRaceXML());
|
||||||
|
notifyMessageListeners(MessageFactory.makePickupMessage(yacht, collidedToken));
|
||||||
|
logger.debug(
|
||||||
|
"Yacht: " + yacht.getShortName() + " got powerup " + collidedToken.getTokenType());
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: 23/09/17 wmu16 - This is a hacky way to have the boat power down. Need some sort of separation between token and status effect :/
|
// TODO: 23/09/17 wmu16 - This is a hacky way to have the boat power down. Need some sort of separation between token and status effect :/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -462,7 +493,7 @@ public class GameState implements Runnable {
|
|||||||
* @param yacht The yacht to disable
|
* @param yacht The yacht to disable
|
||||||
*/
|
*/
|
||||||
private void boatTempShutDown(ServerYacht yacht) {
|
private void boatTempShutDown(ServerYacht yacht) {
|
||||||
yacht.setPowerUpSpeedMultiplier(0);
|
yacht.setPowerUpSpeedMultiplier(0d);
|
||||||
Timer shutDownTimer = new Timer("Shutdown Timer");
|
Timer shutDownTimer = new Timer("Shutdown Timer");
|
||||||
shutDownTimer.schedule(new TimerTask() {
|
shutDownTimer.schedule(new TimerTask() {
|
||||||
@Override
|
@Override
|
||||||
@@ -533,36 +564,18 @@ public class GameState implements Runnable {
|
|||||||
* Checks all tokensInPlay to see if a yacht has picked one up. If so, the yacht is powered up
|
* Checks all tokensInPlay to see if a yacht has picked one up. If so, the yacht is powered up
|
||||||
* in the appropriate way
|
* in the appropriate way
|
||||||
* @param yacht The yacht to check for collision with a token
|
* @param yacht The yacht to check for collision with a token
|
||||||
|
*
|
||||||
|
* @return The token collided with
|
||||||
*/
|
*/
|
||||||
private void checkTokenPickUp(ServerYacht yacht) {
|
private Token checkTokenPickUp(ServerYacht yacht) {
|
||||||
Token collidedToken = null;
|
|
||||||
for (Token token : tokensInPlay) {
|
for (Token token : tokensInPlay) {
|
||||||
Double distance = GeoUtility.getDistance(token, yacht.getLocation());
|
Double distance = GeoUtility.getDistance(token, yacht.getLocation());
|
||||||
if (distance < YACHT_COLLISION_DISTANCE) {
|
if (distance < YACHT_COLLISION_DISTANCE) {
|
||||||
collidedToken = token;
|
return token;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collidedToken != null) {
|
return null;
|
||||||
tokensInPlay.remove(collidedToken);
|
|
||||||
if (collidedToken.getTokenType() == TokenType.RANDOM) {
|
|
||||||
collidedToken.realiseRandom();
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenType tokenType = collidedToken.getTokenType();
|
|
||||||
yacht.powerUp(tokenType);
|
|
||||||
|
|
||||||
String logMessage =
|
|
||||||
yacht.getBoatName() + " has picked up a " + collidedToken.getTokenType().getName()
|
|
||||||
+ " token";
|
|
||||||
notifyMessageListeners(
|
|
||||||
MessageFactory.makeChatterMessage(yacht.getSourceId(), logMessage));
|
|
||||||
notifyMessageListeners(MessageFactory.getRaceXML());
|
|
||||||
notifyMessageListeners(MessageFactory.makePickupMessage(yacht, collidedToken));
|
|
||||||
|
|
||||||
logger.debug("Yacht: " + yacht.getShortName() + " got powerup " + collidedToken
|
|
||||||
.getTokenType());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package seng302.gameServer.messages;
|
package seng302.gameServer.messages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by wmu16 on 11/09/17.
|
* Enum for different event types for the yacht
|
||||||
*/
|
*/
|
||||||
public enum YachtEventType {
|
public enum YachtEventType {
|
||||||
COLLISION(33),
|
COLLISION(33),
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class ServerYacht {
|
|||||||
//PowerUp
|
//PowerUp
|
||||||
private TokenType powerUp;
|
private TokenType powerUp;
|
||||||
private Long powerUpStartTime;
|
private Long powerUpStartTime;
|
||||||
private Integer powerUpSpeedMultiplier;
|
private Double powerUpSpeedMultiplier;
|
||||||
private Integer powerUpHandlingMultiplier;
|
private Integer powerUpHandlingMultiplier;
|
||||||
|
|
||||||
//turning mode
|
//turning mode
|
||||||
@@ -80,7 +80,7 @@ public class ServerYacht {
|
|||||||
this.legNumber = 0;
|
this.legNumber = 0;
|
||||||
this.boatColor = Colors.getColor(sourceId - 1);
|
this.boatColor = Colors.getColor(sourceId - 1);
|
||||||
this.powerUp = null;
|
this.powerUp = null;
|
||||||
this.powerUpSpeedMultiplier = 1;
|
this.powerUpSpeedMultiplier = 1d;
|
||||||
this.powerUpHandlingMultiplier = 1;
|
this.powerUpHandlingMultiplier = 1;
|
||||||
this.hasEnteredRoundingZone = false;
|
this.hasEnteredRoundingZone = false;
|
||||||
this.hasPassedLine = false;
|
this.hasPassedLine = false;
|
||||||
@@ -137,7 +137,7 @@ public class ServerYacht {
|
|||||||
*/
|
*/
|
||||||
public void powerDown() {
|
public void powerDown() {
|
||||||
this.powerUp = null;
|
this.powerUp = null;
|
||||||
this.powerUpSpeedMultiplier = 1;
|
this.powerUpSpeedMultiplier = 1d;
|
||||||
this.powerUpHandlingMultiplier = 1;
|
this.powerUpHandlingMultiplier = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,11 +480,11 @@ public class ServerYacht {
|
|||||||
this.continuouslyTurning = continuouslyTurning;
|
this.continuouslyTurning = continuouslyTurning;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getPowerUpSpeedMultiplier() {
|
public Double getPowerUpSpeedMultiplier() {
|
||||||
return powerUpSpeedMultiplier;
|
return powerUpSpeedMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPowerUpSpeedMultiplier(Integer powerUpSpeedMultiplier) {
|
public void setPowerUpSpeedMultiplier(Double powerUpSpeedMultiplier) {
|
||||||
this.powerUpSpeedMultiplier = powerUpSpeedMultiplier;
|
this.powerUpSpeedMultiplier = powerUpSpeedMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -417,6 +417,7 @@ public class GameView3D {
|
|||||||
public void cameraMovement(KeyEvent event) {
|
public void cameraMovement(KeyEvent event) {
|
||||||
GameKeyBind keyBinds = GameKeyBind.getInstance();
|
GameKeyBind keyBinds = GameKeyBind.getInstance();
|
||||||
KeyAction keyPressed = keyBinds.getKeyAction(event.getCode());
|
KeyAction keyPressed = keyBinds.getKeyAction(event.getCode());
|
||||||
|
if (keyPressed != null) {
|
||||||
switch (keyPressed) {
|
switch (keyPressed) {
|
||||||
case ZOOM_IN:
|
case ZOOM_IN:
|
||||||
((RaceCamera) view.getCamera()).zoomIn();
|
((RaceCamera) view.getCamera()).zoomIn();
|
||||||
@@ -441,6 +442,7 @@ public class GameView3D {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void toggleCamera() {
|
private void toggleCamera() {
|
||||||
Camera currCamera = view.getCamera();
|
Camera currCamera = view.getCamera();
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
@FXML
|
@FXML
|
||||||
private Label positionLabel, boatSpeedLabel, boatHeadingLabel;
|
private Label positionLabel, boatSpeedLabel, boatHeadingLabel;
|
||||||
@FXML
|
@FXML
|
||||||
private ImageView velocityIcon, handlingIcon, windWalkerIcon, bumperIcon;
|
private ImageView velocityIcon, handlingIcon, windWalkerIcon, bumperIcon, badRandomIcon;
|
||||||
|
|
||||||
//Race Data
|
//Race Data
|
||||||
private Map<Integer, ClientYacht> participants;
|
private Map<Integer, ClientYacht> participants;
|
||||||
@@ -325,6 +325,9 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
case BUMPER:
|
case BUMPER:
|
||||||
iconToDisplay = bumperIcon;
|
iconToDisplay = bumperIcon;
|
||||||
break;
|
break;
|
||||||
|
case RANDOM:
|
||||||
|
iconToDisplay = badRandomIcon;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
iconToDisplay = velocityIcon;
|
iconToDisplay = velocityIcon;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,9 +25,8 @@
|
|||||||
<?import javafx.scene.text.Font?>
|
<?import javafx.scene.text.Font?>
|
||||||
|
|
||||||
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
|
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
|
||||||
maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity"
|
maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
|
||||||
prefHeight="800.0" prefWidth="1200.0"
|
prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8"
|
||||||
style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8"
|
|
||||||
xmlns:fx="http://javafx.com/fxml/1"
|
xmlns:fx="http://javafx.com/fxml/1"
|
||||||
fx:controller="seng302.visualiser.controllers.RaceViewController">
|
fx:controller="seng302.visualiser.controllers.RaceViewController">
|
||||||
<children>
|
<children>
|
||||||
@@ -48,17 +47,15 @@
|
|||||||
valignment="BOTTOM" vgrow="SOMETIMES"/>
|
valignment="BOTTOM" vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0"
|
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
|
||||||
styleClass="timer">
|
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
|
||||||
prefWidth="50.0"/>
|
prefWidth="50.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0"
|
||||||
minWidth="135.0" prefWidth="135.0"/>
|
prefWidth="135.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0"
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<opaqueInsets>
|
<opaqueInsets>
|
||||||
<Insets/>
|
<Insets/>
|
||||||
@@ -90,25 +87,20 @@
|
|||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane GridPane.columnIndex="2">
|
<GridPane GridPane.columnIndex="2">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
prefWidth="100.0"/>
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0"
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2"
|
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
||||||
GridPane.rowIndex="2">
|
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0"
|
||||||
minWidth="390.0" prefWidth="390.0"/>
|
prefWidth="390.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="1.7976931348623157E308"
|
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
|
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
|
||||||
vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
@@ -131,18 +123,16 @@
|
|||||||
minWidth="90.0" prefWidth="90.0"/>
|
minWidth="90.0" prefWidth="90.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="50.0" minHeight="50.0"
|
<RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0"
|
||||||
prefHeight="50.0" valignment="CENTER" vgrow="SOMETIMES"/>
|
valignment="CENTER" vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<JFXButton fx:id="chatSend" alignment="CENTER"
|
<JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED"
|
||||||
buttonType="RAISED" maxHeight="-Infinity"
|
maxHeight="-Infinity" maxWidth="1.7976931348623157E308"
|
||||||
maxWidth="1.7976931348623157E308" minHeight="-Infinity"
|
minHeight="-Infinity" minWidth="-Infinity" prefHeight="35.0"
|
||||||
minWidth="-Infinity" prefHeight="35.0" text="SEND"
|
text="SEND" GridPane.columnIndex="1">
|
||||||
GridPane.columnIndex="1">
|
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets bottom="10.0" left="10.0" right="10.0"
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
||||||
top="10.0"/>
|
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</JFXButton>
|
</JFXButton>
|
||||||
<JFXTextField fx:id="chatInput" maxHeight="35.0"
|
<JFXTextField fx:id="chatInput" maxHeight="35.0"
|
||||||
@@ -168,28 +158,27 @@
|
|||||||
prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER"
|
prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
|
GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="110.0"
|
||||||
minWidth="110.0" prefWidth="110.0"/>
|
prefWidth="110.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0"
|
||||||
prefWidth="132.0"/>
|
prefWidth="132.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="120.0" minHeight="120.0"
|
<RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0"
|
||||||
prefHeight="120.0" vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
||||||
vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<Label fx:id="positionLabel" text="Position:"
|
<Label fx:id="positionLabel" text="Position:" GridPane.columnIndex="1"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="LEFT"
|
GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="TOP">
|
||||||
GridPane.rowSpan="2" GridPane.valignment="TOP">
|
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="boatSpeedLabel" text="Boat Speed:"
|
<Label fx:id="boatSpeedLabel" text="Boat Speed:" GridPane.columnIndex="1"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="LEFT"
|
GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
||||||
GridPane.rowSpan="2" GridPane.valignment="CENTER">
|
GridPane.valignment="CENTER">
|
||||||
<opaqueInsets>
|
<opaqueInsets>
|
||||||
<Insets/>
|
<Insets/>
|
||||||
</opaqueInsets>
|
</opaqueInsets>
|
||||||
@@ -198,8 +187,8 @@
|
|||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="boatHeadingLabel" text="Boat Heading:"
|
<Label fx:id="boatHeadingLabel" text="Boat Heading:"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="LEFT"
|
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
||||||
GridPane.rowSpan="2" GridPane.valignment="BOTTOM">
|
GridPane.valignment="BOTTOM">
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
||||||
</padding>
|
</padding>
|
||||||
@@ -212,12 +201,12 @@
|
|||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="120.0" minHeight="120.0"
|
<RowConstraints maxHeight="120.0" minHeight="120.0"
|
||||||
prefHeight="120.0" vgrow="SOMETIMES"/>
|
prefHeight="120.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="30.0" minHeight="30.0"
|
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
||||||
prefHeight="30.0" vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<ImageView fx:id="windImageView" fitHeight="92.0"
|
<ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0"
|
||||||
fitWidth="109.0" pickOnBounds="true" preserveRatio="true"
|
pickOnBounds="true" preserveRatio="true"
|
||||||
GridPane.halignment="CENTER" GridPane.rowSpan="2"
|
GridPane.halignment="CENTER" GridPane.rowSpan="2"
|
||||||
GridPane.valignment="CENTER"/>
|
GridPane.valignment="CENTER"/>
|
||||||
<Label fx:id="windSpeedLabel" text="0.0 Knots"
|
<Label fx:id="windSpeedLabel" text="0.0 Knots"
|
||||||
@@ -246,30 +235,27 @@
|
|||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
prefWidth="100.0"/>
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
prefWidth="100.0"/>
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
prefWidth="100.0"/>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0"
|
<RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0"
|
||||||
vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0"
|
<RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0"
|
||||||
vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<ImageView fx:id="velocityIcon" fitHeight="123.0" fitWidth="139.0"
|
<ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0"
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
||||||
<image>
|
<image>
|
||||||
<Image url="@../icons/velocity.png"/>
|
<Image url="@../icons/velocity.png"/>
|
||||||
</image>
|
</image>
|
||||||
</ImageView>
|
</ImageView>
|
||||||
<ImageView fx:id="handlingIcon" fitHeight="123.0" fitWidth="139.0"
|
<ImageView fx:id="handlingIcon" fitHeight="87.0" fitWidth="98.0"
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="1">
|
GridPane.rowIndex="1">
|
||||||
@@ -277,7 +263,7 @@
|
|||||||
<Image url="@../icons/handlingIcon.png"/>
|
<Image url="@../icons/handlingIcon.png"/>
|
||||||
</image>
|
</image>
|
||||||
</ImageView>
|
</ImageView>
|
||||||
<ImageView fx:id="windWalkerIcon" fitHeight="123.0" fitWidth="139.0"
|
<ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0"
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
GridPane.columnIndex="2" GridPane.halignment="CENTER"
|
GridPane.columnIndex="2" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="1">
|
GridPane.rowIndex="1">
|
||||||
@@ -285,7 +271,7 @@
|
|||||||
<Image url="@../icons/windWalkerIcon.png"/>
|
<Image url="@../icons/windWalkerIcon.png"/>
|
||||||
</image>
|
</image>
|
||||||
</ImageView>
|
</ImageView>
|
||||||
<ImageView fx:id="bumperIcon" fitHeight="123.0" fitWidth="139.0"
|
<ImageView fx:id="bumperIcon" fitHeight="83.0" fitWidth="88.0"
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
GridPane.columnIndex="3" GridPane.halignment="CENTER"
|
GridPane.columnIndex="3" GridPane.halignment="CENTER"
|
||||||
GridPane.rowIndex="1">
|
GridPane.rowIndex="1">
|
||||||
@@ -293,6 +279,14 @@
|
|||||||
<Image url="@../icons/bumperIcon.png"/>
|
<Image url="@../icons/bumperIcon.png"/>
|
||||||
</image>
|
</image>
|
||||||
</ImageView>
|
</ImageView>
|
||||||
|
<ImageView fx:id="badRandomIcon" fitHeight="69.0" fitWidth="103.0"
|
||||||
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
|
GridPane.columnIndex="4" GridPane.halignment="CENTER"
|
||||||
|
GridPane.rowIndex="1" GridPane.valignment="CENTER">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/ayy_lmao.gif"/>
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
|
|||||||
Reference in New Issue
Block a user