mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 09c02d5c54 | |||
| 08c34a0b1e |
@@ -104,7 +104,6 @@ public class ServerYacht {
|
|||||||
* @param secondsElapsed The seconds elapsed since the last update of this yacht
|
* @param secondsElapsed The seconds elapsed since the last update of this yacht
|
||||||
*/
|
*/
|
||||||
public void updateLocation(Double secondsElapsed) {
|
public void updateLocation(Double secondsElapsed) {
|
||||||
//test
|
|
||||||
lastLocation = location;
|
lastLocation = location;
|
||||||
location = GeoUtility.getGeoCoordinate(location, heading, currentVelocity * secondsElapsed);
|
location = GeoUtility.getGeoCoordinate(location, heading, currentVelocity * secondsElapsed);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,5 @@
|
|||||||
package seng302.visualiser;
|
package seng302.visualiser;
|
||||||
|
|
||||||
import javafx.application.Platform;
|
|
||||||
import javafx.util.Pair;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import seng302.gameServer.messages.*;
|
|
||||||
import seng302.model.stream.packets.PacketType;
|
|
||||||
import seng302.model.stream.packets.StreamPacket;
|
|
||||||
import seng302.utilities.XMLParser;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -23,6 +14,7 @@ import java.util.TimerTask;
|
|||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.zip.CRC32;
|
import java.util.zip.CRC32;
|
||||||
import java.util.zip.Checksum;
|
import java.util.zip.Checksum;
|
||||||
|
import javafx.application.Platform;
|
||||||
import javafx.util.Pair;
|
import javafx.util.Pair;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -99,6 +91,7 @@ public class ClientToServerThread implements Runnable {
|
|||||||
|
|
||||||
private ByteArrayOutputStream crcBuffer;
|
private ByteArrayOutputStream crcBuffer;
|
||||||
private boolean socketOpen = true;
|
private boolean socketOpen = true;
|
||||||
|
private boolean ignoreDC = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for ClientToServerThread which takes in ipAddress and portNumber and attempts to
|
* Constructor for ClientToServerThread which takes in ipAddress and portNumber and attempts to
|
||||||
@@ -181,8 +174,10 @@ public class ClientToServerThread implements Runnable {
|
|||||||
closeSocket();
|
closeSocket();
|
||||||
|
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
ViewManager.getInstance().showErrorSnackBar("Server rejected connection.");
|
if (ignoreDC) {
|
||||||
ViewManager.getInstance().goToStartView();
|
ViewManager.getInstance().showErrorSnackBar("Server rejected connection.");
|
||||||
|
ViewManager.getInstance().goToStartView();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,7 +193,7 @@ public class ClientToServerThread implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void notifyDisconnectListeners (String message) {
|
private void notifyDisconnectListeners (String message) {
|
||||||
if (socketOpen) {
|
if (socketOpen && !ignoreDC) {
|
||||||
for (DisconnectedFromHostListener listener : disconnectionListeners) {
|
for (DisconnectedFromHostListener listener : disconnectionListeners) {
|
||||||
listener.notifyDisconnection(message);
|
listener.notifyDisconnection(message);
|
||||||
}
|
}
|
||||||
@@ -448,4 +443,8 @@ public class ClientToServerThread implements Runnable {
|
|||||||
public boolean hasStarted() {
|
public boolean hasStarted() {
|
||||||
return isStarted;
|
return isStarted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ignoreDC() {
|
||||||
|
ignoreDC = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,12 +49,6 @@ import seng302.visualiser.controllers.RaceViewController;
|
|||||||
import seng302.visualiser.controllers.ViewManager;
|
import seng302.visualiser.controllers.ViewManager;
|
||||||
import seng302.visualiser.controllers.dialogs.PopupDialogController;
|
import seng302.visualiser.controllers.dialogs.PopupDialogController;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.ZoneOffset;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is a client side instance of a yacht racing game in JavaFX. The game is instantiated
|
* This class is a client side instance of a yacht racing game in JavaFX. The game is instantiated
|
||||||
* with a JavaFX Pane to insert itself into.
|
* with a JavaFX Pane to insert itself into.
|
||||||
@@ -210,7 +204,11 @@ public class GameClient {
|
|||||||
controller.setContent(message);
|
controller.setContent(message);
|
||||||
controller.setOptionButtonText("GO HOME");
|
controller.setOptionButtonText("GO HOME");
|
||||||
controller
|
controller
|
||||||
.setOptionButtonEventHandler(event -> ViewManager.getInstance().goToStartView());
|
.setOptionButtonEventHandler(event -> {
|
||||||
|
System.out.println("inShowConnectionError");
|
||||||
|
ViewManager.getInstance().goToStartView();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package seng302.visualiser;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -24,7 +23,11 @@ import javafx.scene.transform.Scale;
|
|||||||
import javafx.scene.transform.Translate;
|
import javafx.scene.transform.Translate;
|
||||||
import org.fxyz3d.scene.Skybox;
|
import org.fxyz3d.scene.Skybox;
|
||||||
import seng302.gameServer.messages.RoundingSide;
|
import seng302.gameServer.messages.RoundingSide;
|
||||||
import seng302.model.*;
|
import seng302.model.ClientYacht;
|
||||||
|
import seng302.model.GameKeyBind;
|
||||||
|
import seng302.model.KeyAction;
|
||||||
|
import seng302.model.Limit;
|
||||||
|
import seng302.model.ScaledPoint;
|
||||||
import seng302.model.mark.CompoundMark;
|
import seng302.model.mark.CompoundMark;
|
||||||
import seng302.model.mark.Corner;
|
import seng302.model.mark.Corner;
|
||||||
import seng302.model.mark.Mark;
|
import seng302.model.mark.Mark;
|
||||||
@@ -51,7 +54,7 @@ public class GameView3D extends GameView{
|
|||||||
|
|
||||||
private final double FOV = 60;
|
private final double FOV = 60;
|
||||||
private final double DEFAULT_CAMERA_X = 0;
|
private final double DEFAULT_CAMERA_X = 0;
|
||||||
private final double DEFAULT_CAMERA_Y = 100;
|
private final double DEFAULT_CAMERA_Y = 160;
|
||||||
|
|
||||||
private Group root3D;
|
private Group root3D;
|
||||||
private SubScene view;
|
private SubScene view;
|
||||||
@@ -164,6 +167,7 @@ public class GameView3D extends GameView{
|
|||||||
}
|
}
|
||||||
|
|
||||||
createMarkArrows();
|
createMarkArrows();
|
||||||
|
course.get(0).getMarks().forEach((mark -> markerObjects.get(mark).showNextExitArrow()));
|
||||||
|
|
||||||
//Scale race to markers if there is no border.
|
//Scale race to markers if there is no border.
|
||||||
if (borderPoints == null) {
|
if (borderPoints == null) {
|
||||||
@@ -505,7 +509,7 @@ public class GameView3D extends GameView{
|
|||||||
|
|
||||||
private void updateMarkArrows (ClientYacht yacht, int legNumber) {
|
private void updateMarkArrows (ClientYacht yacht, int legNumber) {
|
||||||
CompoundMark compoundMark;
|
CompoundMark compoundMark;
|
||||||
if (legNumber - 1 >= 0) {
|
if (legNumber - 1 >= 0 && legNumber-1 < course.size()) {
|
||||||
Sounds.playMarkRoundingSound();
|
Sounds.playMarkRoundingSound();
|
||||||
compoundMark = course.get(legNumber-1);
|
compoundMark = course.get(legNumber-1);
|
||||||
for (Mark mark : compoundMark.getMarks()) {
|
for (Mark mark : compoundMark.getMarks()) {
|
||||||
@@ -513,7 +517,7 @@ public class GameView3D extends GameView{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CompoundMark nextMark = null;
|
CompoundMark nextMark = null;
|
||||||
if (legNumber < course.size() - 1) {
|
if (legNumber < course.size()) {
|
||||||
Sounds.playMarkRoundingSound();
|
Sounds.playMarkRoundingSound();
|
||||||
nextMark = course.get(legNumber);
|
nextMark = course.get(legNumber);
|
||||||
for (Mark mark : nextMark.getMarks()) {
|
for (Mark mark : nextMark.getMarks()) {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ public class IsometricCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
private final Double MAX_Y = 170.0;
|
private final Double MAX_Y = 170.0;
|
||||||
|
|
||||||
private final Double PAN_LIMIT = 160.0;
|
private final Double PAN_LIMIT = 160.0;
|
||||||
private final Double NEAR_ZOOM_LIMIT = -50.0;
|
private final Double NEAR_ZOOM_LIMIT = -30.0;
|
||||||
private final Double FAR_ZOOM_LIMIT = -160.0;
|
private final Double FAR_ZOOM_LIMIT = -180.0;
|
||||||
|
|
||||||
private Double horizontalPan;
|
private Double horizontalPan;
|
||||||
private Double verticalPan;
|
private Double verticalPan;
|
||||||
@@ -29,7 +29,8 @@ public class IsometricCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
super(true);
|
super(true);
|
||||||
transforms = this.getTransforms();
|
transforms = this.getTransforms();
|
||||||
|
|
||||||
zoomFactor = (FAR_ZOOM_LIMIT + NEAR_ZOOM_LIMIT) / 2.0;
|
// zoomFactor = (FAR_ZOOM_LIMIT + NEAR_ZOOM_LIMIT) / 2.0;
|
||||||
|
zoomFactor = FAR_ZOOM_LIMIT;
|
||||||
horizontalPan = cameraStartX;
|
horizontalPan = cameraStartX;
|
||||||
verticalPan = cameraStartY;
|
verticalPan = cameraStartY;
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ import seng302.visualiser.fxObjects.assets_3D.BoatObject;
|
|||||||
|
|
||||||
public class TopDownCamera extends PerspectiveCamera implements RaceCamera {
|
public class TopDownCamera extends PerspectiveCamera implements RaceCamera {
|
||||||
|
|
||||||
private final Double PAN_LIMIT = 30.0;
|
private final Double PAN_LIMIT = 40d;
|
||||||
private final Double NEAR_ZOOM_LIMIT = -30.0;
|
private final Double NEAR_ZOOM_LIMIT = -35d;
|
||||||
private final Double FAR_ZOOM_LIMIT = -130.0;
|
private final Double FAR_ZOOM_LIMIT = -145d;
|
||||||
private final Double ZOOM_STEP = 2.5;
|
private final Double ZOOM_STEP = 2.5;
|
||||||
|
|
||||||
private ObservableList<Transform> transforms;
|
private ObservableList<Transform> transforms;
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ public class LobbyController implements Initializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void leaveLobby() {
|
private void leaveLobby() {
|
||||||
|
System.out.println("LEFT LOBBY");
|
||||||
ViewManager.getInstance().getGameClient().stopGame();
|
ViewManager.getInstance().getGameClient().stopGame();
|
||||||
ViewManager.getInstance().goToStartView();
|
ViewManager.getInstance().goToStartView();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,7 +197,9 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void showFinishDialog(ArrayList<ClientYacht> finishedBoats) {
|
public void showFinishDialog(ArrayList<ClientYacht> finishedBoats) {
|
||||||
|
System.out.println("called");
|
||||||
raceState.setRaceStarted(false);
|
raceState.setRaceStarted(false);
|
||||||
|
ViewManager.getInstance().getGameClient().getServerThread().ignoreDC();
|
||||||
createFinishDialog(finishedBoats);
|
createFinishDialog(finishedBoats);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.jfoenix.controls.JFXButton;
|
|||||||
import com.jfoenix.controls.JFXListView;
|
import com.jfoenix.controls.JFXListView;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
@@ -26,7 +25,10 @@ public class FinishDialogController implements Initializable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
playAgain.setOnAction(event -> ViewManager.getInstance().goToStartView());
|
playAgain.setOnAction(event -> {
|
||||||
|
System.out.println("CALLED HERE");
|
||||||
|
ViewManager.getInstance().goToStartView();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFinishedBoats(ArrayList<ClientYacht> finishedBoats) {
|
public void setFinishedBoats(ArrayList<ClientYacht> finishedBoats) {
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ public class ServerCreationController implements Initializable {
|
|||||||
@FXML
|
@FXML
|
||||||
private JFXSlider maxPlayersSlider;
|
private JFXSlider maxPlayersSlider;
|
||||||
@FXML
|
@FXML
|
||||||
|
private Label maxPlayersLabel;
|
||||||
|
@FXML
|
||||||
private JFXButton submitBtn;
|
private JFXButton submitBtn;
|
||||||
@FXML
|
@FXML
|
||||||
private Label closeLabel;
|
private Label closeLabel;
|
||||||
@FXML
|
@FXML
|
||||||
private Label maxPlayersLabel;
|
|
||||||
@FXML
|
|
||||||
private JFXButton nextMapButton;
|
private JFXButton nextMapButton;
|
||||||
@FXML
|
@FXML
|
||||||
private JFXButton lastMapButton;
|
private JFXButton lastMapButton;
|
||||||
@@ -47,10 +47,11 @@ public class ServerCreationController implements Initializable {
|
|||||||
private JFXCheckBox pickupsCheckBox;
|
private JFXCheckBox pickupsCheckBox;
|
||||||
@FXML
|
@FXML
|
||||||
private AnchorPane mapHolder;
|
private AnchorPane mapHolder;
|
||||||
//---------FXML END---------//
|
|
||||||
|
|
||||||
private MapMaker mapMaker = MapMaker.getInstance();
|
private MapMaker mapMaker = MapMaker.getInstance();
|
||||||
|
|
||||||
|
//---------FXML END---------//
|
||||||
|
|
||||||
private List<ServerCreationDialogListener> serverCreationDialogListeners;
|
private List<ServerCreationDialogListener> serverCreationDialogListeners;
|
||||||
|
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
@@ -95,7 +96,7 @@ public class ServerCreationController implements Initializable {
|
|||||||
mapHolder.getChildren().setAll(mapMaker.getCurrentGameView());
|
mapHolder.getChildren().setAll(mapMaker.getCurrentGameView());
|
||||||
mapNameLabel.setText(mapMaker.getCurrentRegatta().getCourseName());
|
mapNameLabel.setText(mapMaker.getCurrentRegatta().getCourseName());
|
||||||
pickupsCheckBox.setSelected(true);
|
pickupsCheckBox.setSelected(true);
|
||||||
closeLabel.setOnMouseClicked(event -> notifyListeners());
|
//closeLabel.setOnMouseClicked(event -> notifyListeners());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -133,8 +134,7 @@ public class ServerCreationController implements Initializable {
|
|||||||
*/
|
*/
|
||||||
private void updateMaxPlayerLabel() {
|
private void updateMaxPlayerLabel() {
|
||||||
maxPlayersSlider.setValue(Math.floor(maxPlayersSlider.getValue()));
|
maxPlayersSlider.setValue(Math.floor(maxPlayersSlider.getValue()));
|
||||||
maxPlayersLabel.setText(String
|
maxPlayersLabel.setText(String.format("Max players: %.0f", maxPlayersSlider.getValue()));
|
||||||
.format("Only %.0f players are allowed into the game", maxPlayersSlider.getValue()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateLegSliderLabel() {
|
private void updateLegSliderLabel() {
|
||||||
|
|||||||
@@ -2,14 +2,6 @@
|
|||||||
-fx-font-family: monospace !important;
|
-fx-font-family: monospace !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sliderLabel {
|
|
||||||
-fx-text-fill: -fx-pp-dark-text-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-label * {
|
|
||||||
-fx-text-fill: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submitBtn {
|
#submitBtn {
|
||||||
-fx-background-color: -fx-pp-theme-color;
|
-fx-background-color: -fx-pp-theme-color;
|
||||||
-fx-text-fill: -fx-pp-light-text-color;
|
-fx-text-fill: -fx-pp-light-text-color;
|
||||||
@@ -40,7 +32,12 @@
|
|||||||
-fx-font-size: 16px;
|
-fx-font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.optionLabel {
|
#maxPlayersLabel {
|
||||||
|
-fx-text-fill: -fx-pp-dark-text-color;
|
||||||
|
-fx-font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#maxPlayerPromptLabel {
|
||||||
-fx-text-fill: -fx-pp-dark-text-color;
|
-fx-text-fill: -fx-pp-dark-text-color;
|
||||||
-fx-font-size: 16px;
|
-fx-font-size: 16px;
|
||||||
}
|
}
|
||||||
@@ -58,8 +55,3 @@
|
|||||||
-fx-text-fill: red;
|
-fx-text-fill: red;
|
||||||
-fx-font-size: 33px;
|
-fx-font-size: 33px;
|
||||||
}
|
}
|
||||||
|
|
||||||
JFXCheckBox {
|
|
||||||
-jfx-checked-color: -fx-pp-theme-color;
|
|
||||||
-fx-text-fill: -fx-pp-dark-text-color;
|
|
||||||
}
|
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
<Corner CompoundMarkID="1" Rounding="PS"/>
|
<Corner CompoundMarkID="1" Rounding="PS"/>
|
||||||
<Corner CompoundMarkID="2" Rounding="S"/>
|
<Corner CompoundMarkID="2" Rounding="S"/>
|
||||||
<Corner CompoundMarkID="3" Rounding="S"/>
|
<Corner CompoundMarkID="3" Rounding="S"/>
|
||||||
<Corner CompoundMarkID="4" Rounding="SP"/>
|
<Corner CompoundMarkID="4" Rounding="PS"/>
|
||||||
</OpeningSegment>
|
</OpeningSegment>
|
||||||
|
|
||||||
<RepeatingSegment>
|
<RepeatingSegment>
|
||||||
|
|||||||
@@ -24,281 +24,283 @@
|
|||||||
<?import javafx.scene.text.Font?>
|
<?import javafx.scene.text.Font?>
|
||||||
|
|
||||||
<StackPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.RaceViewController">
|
<StackPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.RaceViewController">
|
||||||
|
<children>
|
||||||
|
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
|
||||||
|
maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
|
||||||
|
prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8.0.111"
|
||||||
|
xmlns:fx="http://javafx.com/fxml/1">
|
||||||
<children>
|
<children>
|
||||||
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
|
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
||||||
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.0.111"
|
<columnConstraints>
|
||||||
xmlns:fx="http://javafx.com/fxml/1">
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0"
|
||||||
|
prefWidth="250.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0"
|
||||||
|
prefWidth="400.0"/>
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0"
|
||||||
|
vgrow="SOMETIMES"/>
|
||||||
|
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
|
||||||
|
<RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0"
|
||||||
|
valignment="BOTTOM" vgrow="SOMETIMES"/>
|
||||||
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
|
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
|
||||||
prefHeight="800.0" prefWidth="1200.0">
|
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0"
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
|
||||||
prefWidth="250.0"/>
|
prefWidth="50.0"/>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/>
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0"
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0"
|
prefWidth="135.0"/>
|
||||||
prefWidth="400.0"/>
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
|
</rowConstraints>
|
||||||
|
<opaqueInsets>
|
||||||
|
<Insets/>
|
||||||
|
</opaqueInsets>
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets left="10.0" right="200.0" top="10.0"/>
|
||||||
|
</GridPane.margin>
|
||||||
|
<children>
|
||||||
|
<ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true"
|
||||||
|
preserveRatio="true" GridPane.halignment="CENTER"
|
||||||
|
GridPane.valignment="CENTER">
|
||||||
|
<image>
|
||||||
|
<Image url="@../images/timer.png"/>
|
||||||
|
</image>
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets/>
|
||||||
|
</GridPane.margin>
|
||||||
|
</ImageView>
|
||||||
|
<Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1"
|
||||||
|
GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||||
|
<font>
|
||||||
|
<Font size="21.0"/>
|
||||||
|
</font>
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets/>
|
||||||
|
</GridPane.margin>
|
||||||
|
</Label>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
<GridPane GridPane.columnIndex="2">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
||||||
|
</rowConstraints>
|
||||||
|
</GridPane>
|
||||||
|
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0"
|
||||||
|
prefWidth="390.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
|
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0"
|
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
|
||||||
valignment="BOTTOM" vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
|
<Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0"
|
||||||
<columnConstraints>
|
GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM"
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
|
GridPane.vgrow="ALWAYS">
|
||||||
prefWidth="50.0"/>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0"
|
|
||||||
prefWidth="135.0"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
|
||||||
<opaqueInsets>
|
|
||||||
<Insets/>
|
|
||||||
</opaqueInsets>
|
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets left="10.0" right="200.0" top="10.0"/>
|
<Insets/>
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
<children>
|
<padding>
|
||||||
<ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true"
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
||||||
preserveRatio="true" GridPane.halignment="CENTER"
|
</padding>
|
||||||
GridPane.valignment="CENTER">
|
</Pane>
|
||||||
<image>
|
<GridPane fx:id="chatInputHolder" GridPane.rowIndex="1">
|
||||||
<Image url="@../images/timer.png"/>
|
|
||||||
</image>
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</ImageView>
|
|
||||||
<Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1"
|
|
||||||
GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
|
||||||
<font>
|
|
||||||
<Font size="21.0"/>
|
|
||||||
</font>
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</Label>
|
|
||||||
</children>
|
|
||||||
</GridPane>
|
|
||||||
<GridPane GridPane.columnIndex="2">
|
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<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" maxWidth="-Infinity"
|
||||||
|
minWidth="90.0" prefWidth="90.0"/>
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
|
<RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0"
|
||||||
</rowConstraints>
|
valignment="CENTER" vgrow="SOMETIMES"/>
|
||||||
</GridPane>
|
|
||||||
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0"
|
|
||||||
prefWidth="390.0"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0"
|
<JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED"
|
||||||
GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM"
|
focusTraversable="false" maxHeight="-Infinity"
|
||||||
GridPane.vgrow="ALWAYS">
|
maxWidth="1.7976931348623157E308" minHeight="-Infinity"
|
||||||
|
minWidth="-Infinity" prefHeight="35.0" text="SEND"
|
||||||
|
GridPane.columnIndex="1">
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets/>
|
|
||||||
</GridPane.margin>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
||||||
</padding>
|
|
||||||
</Pane>
|
|
||||||
<GridPane fx:id="chatInputHolder" GridPane.rowIndex="1">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
prefWidth="100.0"/>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity"
|
|
||||||
minWidth="90.0" prefWidth="90.0"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0"
|
|
||||||
valignment="CENTER" vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
|
||||||
<JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED"
|
|
||||||
focusTraversable="false" maxHeight="-Infinity"
|
|
||||||
maxWidth="1.7976931348623157E308" minHeight="-Infinity"
|
|
||||||
minWidth="-Infinity" prefHeight="35.0" text="SEND"
|
|
||||||
GridPane.columnIndex="1">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</JFXButton>
|
|
||||||
<JFXTextField fx:id="chatInput" focusTraversable="false"
|
|
||||||
maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets bottom="10.0" left="20.0" right="10.0"/>
|
|
||||||
</GridPane.margin>
|
|
||||||
<padding>
|
|
||||||
<Insets right="15.0"/>
|
|
||||||
</padding>
|
|
||||||
</JFXTextField>
|
|
||||||
</children>
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets top="10.0"/>
|
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</GridPane>
|
</JFXButton>
|
||||||
|
<JFXTextField fx:id="chatInput" focusTraversable="false"
|
||||||
|
maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0">
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets bottom="10.0" left="20.0" right="10.0"/>
|
||||||
|
</GridPane.margin>
|
||||||
|
<padding>
|
||||||
|
<Insets right="15.0"/>
|
||||||
|
</padding>
|
||||||
|
</JFXTextField>
|
||||||
</children>
|
</children>
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets bottom="10.0" right="10.0"/>
|
<Insets top="10.0"/>
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane fx:id="windGridPane" maxHeight="-Infinity" maxWidth="-Infinity"
|
</children>
|
||||||
prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER"
|
<GridPane.margin>
|
||||||
GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
|
<Insets bottom="10.0" right="10.0"/>
|
||||||
<columnConstraints>
|
</GridPane.margin>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="110.0"
|
</GridPane>
|
||||||
prefWidth="110.0"/>
|
<GridPane fx:id="windGridPane" maxHeight="-Infinity" maxWidth="-Infinity"
|
||||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0"
|
prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER"
|
||||||
prefWidth="132.0"/>
|
GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
|
||||||
</columnConstraints>
|
<columnConstraints>
|
||||||
<rowConstraints>
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="110.0"
|
||||||
<RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0"
|
prefWidth="110.0"/>
|
||||||
vgrow="SOMETIMES"/>
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0"
|
||||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
prefWidth="132.0"/>
|
||||||
vgrow="SOMETIMES"/>
|
</columnConstraints>
|
||||||
</rowConstraints>
|
<rowConstraints>
|
||||||
<children>
|
<RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0"
|
||||||
<Label fx:id="positionLabel" text="Position:" GridPane.columnIndex="1"
|
vgrow="SOMETIMES"/>
|
||||||
GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="TOP">
|
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
||||||
<padding>
|
vgrow="SOMETIMES"/>
|
||||||
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
</rowConstraints>
|
||||||
</padding>
|
<children>
|
||||||
</Label>
|
<Label fx:id="positionLabel" text="Position:" GridPane.columnIndex="1"
|
||||||
<Label fx:id="boatSpeedLabel" text="Boat Speed:" GridPane.columnIndex="1"
|
GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="TOP">
|
||||||
GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
<padding>
|
||||||
GridPane.valignment="CENTER">
|
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
||||||
<opaqueInsets>
|
</padding>
|
||||||
<Insets/>
|
</Label>
|
||||||
</opaqueInsets>
|
<Label fx:id="boatSpeedLabel" text="Boat Speed:" GridPane.columnIndex="1"
|
||||||
<padding>
|
GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
||||||
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
GridPane.valignment="CENTER">
|
||||||
</padding>
|
|
||||||
</Label>
|
|
||||||
<Label fx:id="boatHeadingLabel" text="Boat Heading:"
|
|
||||||
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
|
||||||
GridPane.valignment="BOTTOM">
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
|
||||||
</padding>
|
|
||||||
</Label>
|
|
||||||
<GridPane fx:id="windHolder" GridPane.rowSpan="2">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints maxHeight="120.0" minHeight="120.0"
|
|
||||||
prefHeight="120.0" vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
|
||||||
<ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0"
|
|
||||||
pickOnBounds="true" preserveRatio="true"
|
|
||||||
GridPane.halignment="CENTER" GridPane.rowSpan="2"
|
|
||||||
GridPane.valignment="CENTER"/>
|
|
||||||
<Label fx:id="windSpeedLabel" text="0.0 Knots"
|
|
||||||
GridPane.halignment="RIGHT" GridPane.rowIndex="1"
|
|
||||||
GridPane.valignment="CENTER">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets right="5.0"/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</Label>
|
|
||||||
<Label fx:id="windDirectionLabel" text="180.0°"
|
|
||||||
GridPane.halignment="LEFT" GridPane.rowIndex="1"
|
|
||||||
GridPane.valignment="CENTER">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets left="5.0"/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</Label>
|
|
||||||
</children>
|
|
||||||
</GridPane>
|
|
||||||
</children>
|
|
||||||
<opaqueInsets>
|
<opaqueInsets>
|
||||||
<Insets/>
|
<Insets/>
|
||||||
</opaqueInsets>
|
</opaqueInsets>
|
||||||
<GridPane.margin>
|
<padding>
|
||||||
<Insets bottom="10.0" left="10.0" top="40.0"/>
|
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
||||||
</GridPane.margin>
|
</padding>
|
||||||
</GridPane>
|
</Label>
|
||||||
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
<Label fx:id="boatHeadingLabel" text="Boat Heading:"
|
||||||
|
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2"
|
||||||
|
GridPane.valignment="BOTTOM">
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
|
||||||
|
</padding>
|
||||||
|
</Label>
|
||||||
|
<GridPane fx:id="windHolder" GridPane.rowSpan="2">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<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" prefWidth="100.0"/>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0"
|
<RowConstraints maxHeight="120.0" minHeight="120.0"
|
||||||
vgrow="SOMETIMES"/>
|
prefHeight="120.0" vgrow="SOMETIMES"/>
|
||||||
<RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0"
|
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
|
||||||
vgrow="SOMETIMES"/>
|
vgrow="SOMETIMES"/>
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0"
|
<ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0"
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
pickOnBounds="true" preserveRatio="true"
|
||||||
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
GridPane.halignment="CENTER" GridPane.rowSpan="2"
|
||||||
<image>
|
GridPane.valignment="CENTER"/>
|
||||||
<Image url="@../icons/velocity.png"/>
|
<Label fx:id="windSpeedLabel" text="0.0 Knots"
|
||||||
</image>
|
GridPane.halignment="RIGHT" GridPane.rowIndex="1"
|
||||||
</ImageView>
|
GridPane.valignment="CENTER">
|
||||||
<ImageView fx:id="handlingIcon" fitHeight="87.0" fitWidth="98.0"
|
<GridPane.margin>
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
<Insets right="5.0"/>
|
||||||
GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
</GridPane.margin>
|
||||||
GridPane.rowIndex="1">
|
</Label>
|
||||||
<image>
|
<Label fx:id="windDirectionLabel" text="180.0°"
|
||||||
<Image url="@../icons/handlingIcon.png"/>
|
GridPane.halignment="LEFT" GridPane.rowIndex="1"
|
||||||
</image>
|
GridPane.valignment="CENTER">
|
||||||
</ImageView>
|
<GridPane.margin>
|
||||||
<ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0"
|
<Insets left="5.0"/>
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
</GridPane.margin>
|
||||||
GridPane.columnIndex="2" GridPane.halignment="CENTER"
|
</Label>
|
||||||
GridPane.rowIndex="1">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/windWalkerIcon.png"/>
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
<ImageView fx:id="bumperIcon" fitHeight="83.0" fitWidth="88.0"
|
|
||||||
pickOnBounds="true" preserveRatio="true" visible="false"
|
|
||||||
GridPane.columnIndex="3" GridPane.halignment="CENTER"
|
|
||||||
GridPane.rowIndex="1">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/bumperIcon.png"/>
|
|
||||||
</image>
|
|
||||||
</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/slowedIcon.png"/>
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
|
<opaqueInsets>
|
||||||
|
<Insets/>
|
||||||
|
</opaqueInsets>
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets bottom="10.0" left="10.0" top="40.0"/>
|
||||||
|
</GridPane.margin>
|
||||||
|
</GridPane>
|
||||||
|
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0"
|
||||||
|
vgrow="SOMETIMES"/>
|
||||||
|
<RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0"
|
||||||
|
vgrow="SOMETIMES"/>
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0"
|
||||||
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
|
GridPane.halignment="CENTER" GridPane.rowIndex="1">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/velocity.png"/>
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="handlingIcon" fitHeight="87.0" fitWidth="98.0"
|
||||||
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
|
GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
||||||
|
GridPane.rowIndex="1">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/handlingIcon.png"/>
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0"
|
||||||
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
|
GridPane.columnIndex="2" GridPane.halignment="CENTER"
|
||||||
|
GridPane.rowIndex="1">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/windWalkerIcon.png"/>
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
<ImageView fx:id="bumperIcon" fitHeight="83.0" fitWidth="88.0"
|
||||||
|
pickOnBounds="true" preserveRatio="true" visible="false"
|
||||||
|
GridPane.columnIndex="3" GridPane.halignment="CENTER"
|
||||||
|
GridPane.rowIndex="1">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/bumperIcon.png"/>
|
||||||
|
</image>
|
||||||
|
</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/slowedIcon.png"/>
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
</StackPane>
|
</GridPane>
|
||||||
<AnchorPane fx:id="loadingScreenPane">
|
</children>
|
||||||
|
</StackPane>
|
||||||
|
</children>
|
||||||
|
<AnchorPane fx:id="loadingScreenPane">
|
||||||
|
<children>
|
||||||
<ImageView fx:id="loadingScreen" fitHeight="672.0" fitWidth="1200.0" pickOnBounds="true" preserveRatio="true" />
|
<ImageView fx:id="loadingScreen" fitHeight="672.0" fitWidth="1200.0" pickOnBounds="true" preserveRatio="true" />
|
||||||
<JFXSpinner layoutX="566.0" layoutY="692.0" radius="30.0" />
|
<JFXSpinner layoutX="566.0" layoutY="692.0" radius="30.0" />
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
<stylesheets>
|
<stylesheets>
|
||||||
<String fx:value="/css/Master.css"/>
|
<String fx:value="/css/Master.css"/>
|
||||||
<String fx:value="/css/RaceView.css"/>
|
<String fx:value="/css/RaceView.css"/>
|
||||||
|
|||||||
@@ -5,18 +5,16 @@
|
|||||||
<?import com.jfoenix.controls.JFXDialogLayout?>
|
<?import com.jfoenix.controls.JFXDialogLayout?>
|
||||||
<?import com.jfoenix.controls.JFXSlider?>
|
<?import com.jfoenix.controls.JFXSlider?>
|
||||||
<?import com.jfoenix.controls.JFXTextField?>
|
<?import com.jfoenix.controls.JFXTextField?>
|
||||||
<?import java.net.URL?>
|
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import javafx.scene.layout.AnchorPane?>
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
<?import javafx.scene.layout.ColumnConstraints?>
|
<?import javafx.scene.layout.ColumnConstraints?>
|
||||||
<?import javafx.scene.layout.GridPane?>
|
<?import javafx.scene.layout.GridPane?>
|
||||||
<?import javafx.scene.layout.RowConstraints?>
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
<?import javafx.scene.text.Font?>
|
<?import javafx.scene.text.Font?>
|
||||||
<JFXDialogLayout maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
|
|
||||||
minWidth="-Infinity" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8"
|
<JFXDialogLayout maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.dialogs.ServerCreationController">
|
||||||
xmlns:fx="http://javafx.com/fxml/1"
|
|
||||||
fx:controller="seng302.visualiser.controllers.dialogs.ServerCreationController">
|
|
||||||
<children>
|
<children>
|
||||||
<GridPane>
|
<GridPane>
|
||||||
<children>
|
<children>
|
||||||
@@ -38,14 +36,9 @@
|
|||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="90.0" prefHeight="90.0"
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
vgrow="SOMETIMES"/>
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="90.0" prefHeight="90.0"
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="90.0" prefHeight="90.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="90.0" prefHeight="90.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<JFXTextField fx:id="serverName" promptText="SERVER NAME">
|
<JFXTextField fx:id="serverName" promptText="SERVER NAME">
|
||||||
@@ -53,33 +46,29 @@
|
|||||||
<Insets left="15.0" right="15.0" />
|
<Insets left="15.0" right="15.0" />
|
||||||
</padding>
|
</padding>
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets left="20.0" right="35.0"/>
|
<Insets left="35.0" right="35.0" />
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</JFXTextField>
|
</JFXTextField>
|
||||||
<GridPane fx:id="maxPlayersGridPane" GridPane.rowIndex="1">
|
<GridPane fx:id="maxPlayersGridPane" GridPane.rowIndex="1">
|
||||||
<children>
|
<children>
|
||||||
<Label styleClass="optionLabel" text="MAX PLAYERS" translateY="5.0"
|
<Label fx:id="maxPlayersLabel" text="20" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="TOP">
|
||||||
GridPane.halignment="CENTER" GridPane.valignment="BOTTOM">
|
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets/>
|
<Insets right="30.0" />
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</Label>
|
</Label>
|
||||||
<JFXSlider fx:id="maxPlayersSlider" blockIncrement="1.0"
|
<Label fx:id="maxPlayerPromptLabel" text="MAX PLAYERS" GridPane.halignment="LEFT" GridPane.valignment="BOTTOM">
|
||||||
majorTickUnit="2.0" max="20.0" min="1.0" minorTickCount="1"
|
|
||||||
snapToTicks="true" styleClass="maxPlayers" value="11.0"
|
|
||||||
GridPane.columnIndex="1" GridPane.valignment="BOTTOM">
|
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets right="30.0"/>
|
<Insets left="30.0" top="20.0" />
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</JFXSlider>
|
</Label>
|
||||||
<Label fx:id="maxPlayersLabel" alignment="CENTER"
|
<VBox alignment="BOTTOM_CENTER" prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||||
styleClass="sliderLabel" text="10" GridPane.columnIndex="1"
|
<children>
|
||||||
GridPane.halignment="CENTER" GridPane.rowIndex="1"
|
<JFXSlider fx:id="maxPlayersSlider" blockIncrement="1.0" majorTickUnit="2.0" max="20.0" min="1.0" minorTickCount="1" snapToTicks="true" styleClass="maxPlayers" value="11.0" />
|
||||||
GridPane.valignment="CENTER">
|
</children>
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets right="15.0"/>
|
<Insets bottom="10.0" right="30.0" />
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</Label>
|
</VBox>
|
||||||
</children>
|
</children>
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="30.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="30.0" prefWidth="100.0" />
|
||||||
@@ -92,68 +81,48 @@
|
|||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane fx:id="maxPlayersGridPane1" GridPane.rowIndex="2">
|
<GridPane fx:id="maxPlayersGridPane1" GridPane.rowIndex="2">
|
||||||
<children>
|
<children>
|
||||||
|
<Label fx:id="legsSliderLabel" text="20" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="TOP">
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets right="30.0" />
|
||||||
|
</GridPane.margin>
|
||||||
|
</Label>
|
||||||
|
<VBox alignment="BOTTOM_CENTER" prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
||||||
|
<children>
|
||||||
|
<JFXSlider fx:id="legsSlider" blockIncrement="1.0" majorTickUnit="2.0" max="20.0" min="1.0" minorTickCount="1" snapToTicks="true" styleClass="maxPlayers" value="11.0" />
|
||||||
|
</children>
|
||||||
|
<GridPane.margin>
|
||||||
|
<Insets bottom="10.0" right="30.0" />
|
||||||
|
</GridPane.margin>
|
||||||
|
</VBox>
|
||||||
<GridPane>
|
<GridPane>
|
||||||
<children>
|
<children>
|
||||||
<Label alignment="CENTER" styleClass="optionLabel"
|
<Label alignment="CENTER" text="NUMBER OF" GridPane.halignment="CENTER" />
|
||||||
text="NUMBER OF" GridPane.halignment="CENTER"
|
<Label alignment="CENTER" text="REPEATING LEGS" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
|
||||||
GridPane.valignment="BOTTOM"/>
|
|
||||||
</children>
|
</children>
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<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" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<JFXSlider fx:id="legsSlider" blockIncrement="1.0"
|
<JFXCheckBox fx:id="pickupsCheckBox" text="Enable Pickups" GridPane.rowIndex="1">
|
||||||
majorTickUnit="2.0" max="20.0" min="1.0" minorTickCount="1"
|
|
||||||
snapToTicks="true" styleClass="maxPlayers" value="11.0"
|
|
||||||
GridPane.columnIndex="1" GridPane.halignment="CENTER"
|
|
||||||
GridPane.valignment="BOTTOM">
|
|
||||||
<GridPane.margin>
|
<GridPane.margin>
|
||||||
<Insets right="30.0"/>
|
<Insets left="5.0" />
|
||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
</JFXSlider>
|
</JFXCheckBox>
|
||||||
<Label alignment="CENTER" styleClass="optionLabel"
|
|
||||||
text="REPEATING LEGS" GridPane.halignment="CENTER"
|
|
||||||
GridPane.rowIndex="1"/>
|
|
||||||
<Label fx:id="legsSliderLabel" styleClass="sliderLabel" text="10"
|
|
||||||
GridPane.columnIndex="1" GridPane.rowIndex="1">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets right="15.0"/>
|
|
||||||
</GridPane.margin>
|
|
||||||
</Label>
|
|
||||||
</children>
|
</children>
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="30.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="30.0" prefWidth="100.0" />
|
||||||
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES"
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="100.0" prefWidth="100.0" />
|
||||||
minWidth="100.0" prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="10.0"
|
<RowConstraints minHeight="10.0" percentHeight="60.0" prefHeight="10.0" vgrow="SOMETIMES" />
|
||||||
percentHeight="60.0" prefHeight="100.0" vgrow="SOMETIMES"/>
|
<RowConstraints minHeight="10.0" percentHeight="40.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="10.0"
|
|
||||||
percentHeight="40.0" prefHeight="100.0" vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane GridPane.rowIndex="3">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
percentWidth="30.0" prefWidth="100.0"/>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
|
|
||||||
prefWidth="100.0"/>
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0"
|
|
||||||
vgrow="SOMETIMES"/>
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
|
||||||
<JFXCheckBox fx:id="pickupsCheckBox" text=" "
|
|
||||||
GridPane.columnIndex="1"/>
|
|
||||||
<Label styleClass="optionLabel" text="ENABLE TOKENS"
|
|
||||||
GridPane.halignment="CENTER" GridPane.valignment="CENTER"/>
|
|
||||||
</children>
|
|
||||||
</GridPane>
|
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane GridPane.columnIndex="1">
|
<GridPane GridPane.columnIndex="1">
|
||||||
@@ -183,8 +152,7 @@
|
|||||||
<RowConstraints maxHeight="342.0" minHeight="10.0" prefHeight="336.0" vgrow="SOMETIMES" />
|
<RowConstraints maxHeight="342.0" minHeight="10.0" prefHeight="336.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<Label fx:id="mapNameLabel" styleClass="optionLabel" text="MAP NAME"
|
<Label fx:id="mapNameLabel" text="MAP NAME" GridPane.halignment="CENTER" />
|
||||||
GridPane.halignment="CENTER"/>
|
|
||||||
<AnchorPane fx:id="mapHolder" prefHeight="333.0" prefWidth="404.0" GridPane.rowIndex="1" />
|
<AnchorPane fx:id="mapHolder" prefHeight="333.0" prefWidth="404.0" GridPane.rowIndex="1" />
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
@@ -196,8 +164,6 @@
|
|||||||
<font>
|
<font>
|
||||||
<Font size="20.0" />
|
<Font size="20.0" />
|
||||||
</font></Label>
|
</font></Label>
|
||||||
<Label fx:id="closeLabel" text="✖" translateY="-10.0" GridPane.halignment="RIGHT"
|
|
||||||
GridPane.valignment="TOP"/>
|
|
||||||
</children>
|
</children>
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
@@ -209,8 +175,4 @@
|
|||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
<stylesheets>
|
|
||||||
<URL value="@../../css/Master.css"/>
|
|
||||||
<URL value="@../../css/dialogs/ServerCreation.css"/>
|
|
||||||
</stylesheets>
|
|
||||||
</JFXDialogLayout>
|
</JFXDialogLayout>
|
||||||
|
|||||||
Reference in New Issue
Block a user