Merge branch 'develop' into 1273_Skybox

This commit is contained in:
Michael Rausch
2017-09-27 15:32:54 +13:00
9 changed files with 429 additions and 277 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ public class App extends Application {
@Override @Override
public void start(Stage primaryStage) throws Exception { public void start(Stage primaryStage) throws Exception {
ViewManager.getInstance().initialStartView(primaryStage); ViewManager.getInstance().initialiseSplashScreen(primaryStage);
} }
private static void runDiscoveryServer(){ private static void runDiscoveryServer(){
@@ -101,6 +101,10 @@ public class Sounds {
musicPlayer.setCycleCount(MediaPlayer.INDEFINITE); musicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
musicPlayer.setVolume(0.3); musicPlayer.setVolume(0.3);
musicPlayer.play(); musicPlayer.play();
musicPlayer.setMute(musicMuted);
if (soundEffect != null) {
soundEffect.stop();
}
} }
@@ -284,12 +284,13 @@ public class GameClient {
ClientYacht player = allBoatsMap.get(socketThread.getClientId()); ClientYacht player = allBoatsMap.get(socketThread.getClientId());
raceView.loadRace(allBoatsMap, courseData, raceState, player); raceView.loadRace(allBoatsMap, courseData, raceState, player);
raceView.showView();
raceView.getSendPressedProperty().addListener((obs, old, isPressed) -> { raceView.getSendPressedProperty().addListener((obs, old, isPressed) -> {
if (isPressed) { if (isPressed) {
formatAndSendChatMessage(raceView.readChatInput()); formatAndSendChatMessage(raceView.readChatInput());
} }
}); });
} }
} }
@@ -25,12 +25,8 @@ import javafx.scene.SubScene;
import javafx.scene.chart.LineChart; import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis; import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart.Series; import javafx.scene.chart.XYChart.Series;
import javafx.scene.control.Button; import javafx.scene.control.*;
import javafx.scene.control.CheckBox; import javafx.scene.image.Image;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
@@ -74,6 +70,10 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
private static final Double ICON_BLINK_TIMEOUT_RATIO = 0.6; private static final Double ICON_BLINK_TIMEOUT_RATIO = 0.6;
private static final Integer ICON_BLINK_PERIOD = 500; private static final Integer ICON_BLINK_PERIOD = 500;
@FXML
private AnchorPane loadingScreenPane;
@FXML
private ImageView loadingScreen;
@FXML @FXML
private Pane basePane; private Pane basePane;
@FXML @FXML
@@ -143,6 +143,24 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
private ImageView iconToDisplay; private ImageView iconToDisplay;
public void initialize() { public void initialize() {
contentStackPane.setVisible(false);
Image loadingImage = new Image("PP.png");
loadingScreen.setImage(loadingImage);
//Centers the Image within the image view
double w = 0;
double h = 0;
double ratioX = loadingScreen.getFitWidth() / loadingImage.getWidth();
double ratioY = loadingScreen.getFitHeight() / loadingImage.getHeight();
double reduceRatio = 0;
if(ratioX >= ratioY) {
reduceRatio = ratioY;
} else {
reduceRatio = ratioX;
}
w = loadingImage.getWidth() * reduceRatio;
h = loadingImage.getHeight() * reduceRatio;
loadingScreen.setX((loadingScreen.getFitWidth() - w) / 2);
loadingScreen.setY((loadingScreen.getFitHeight() - h) / 2);
Sounds.stopMusic(); Sounds.stopMusic();
Sounds.playRaceMusic(); Sounds.playRaceMusic();
@@ -179,6 +197,18 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
createFinishDialog(finishedBoats); createFinishDialog(finishedBoats);
} }
public void showView(){
loadingScreenPane.setVisible(false);
contentStackPane.setVisible(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
contentStackPane.requestFocus();
}
});
}
/** /**
* Create finishScreenDialog and set up finishDialogController. * Create finishScreenDialog and set up finishDialogController.
*/ */
@@ -0,0 +1,58 @@
package seng302.visualiser.controllers;
import com.jfoenix.controls.JFXDecorator;
import com.jfoenix.controls.JFXSnackbar;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import seng302.gameServer.ServerAdvertiser;
import seng302.utilities.Sounds;
import seng302.visualiser.GameClient;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
/**
* Created by Kusal on 26-Sep-17.
*/
public class SplashScreenController implements Initializable{
@FXML
private StackPane rootPane;
@Override
public void initialize(URL location, ResourceBundle resources) {
new SplashScreen().start();
}
class SplashScreen extends Thread {
public void run(){
try {
Thread.sleep(2000);
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
Stage stage = new Stage();
ViewManager.getInstance().initialStartView(stage);
} catch (Exception e) {
e.printStackTrace();
}
rootPane.getScene().getWindow().hide();
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
@@ -15,6 +15,7 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.StageStyle;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import seng302.gameServer.ServerAdvertiser; import seng302.gameServer.ServerAdvertiser;
@@ -52,10 +53,18 @@ public class ViewManager {
if (instance == null) { if (instance == null) {
instance = new ViewManager(); instance = new ViewManager();
} }
return instance; return instance;
} }
public void initialiseSplashScreen(Stage stage) throws IOException {
this.stage = stage;
Parent root = FXMLLoader.load(getClass().getResource("/views/SplashScreen.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.initStyle(StageStyle.UNDECORATED);
stage.show();
}
/** /**
* Initialize the start view in the given stage. * Initialize the start view in the given stage.
*/ */
@@ -63,7 +72,6 @@ public class ViewManager {
this.stage = stage; this.stage = stage;
Parent root = FXMLLoader.load(getClass().getResource("/views/StartScreenView.fxml")); Parent root = FXMLLoader.load(getClass().getResource("/views/StartScreenView.fxml"));
stage.setTitle("Party Parrots At Sea"); stage.setTitle("Party Parrots At Sea");
JFXDecorator decorator = new JFXDecorator(stage, root, false, true, true); JFXDecorator decorator = new JFXDecorator(stage, root, false, true, true);
decorator.setCustomMaximize(true); decorator.setCustomMaximize(true);
decorator.applyCss(); decorator.applyCss();
@@ -0,0 +1,10 @@
#background {
-fx-background-color: #E7F1F8;
}
#headText {
-fx-background-color: transparent;
-fx-font-size: 52px;
-fx-text-fill: -fx-pp-light-text-color;
-fx-effect: -fx-pp-dropshadow-headers;
}
+276 -267
View File
@@ -23,275 +23,284 @@
<?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.StackPane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308" <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">
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"
fx:controller="seng302.visualiser.controllers.RaceViewController">
<children> <children>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" <StackPane fx:id="contentStackPane" maxHeight="1.7976931348623157E308"
prefHeight="800.0" prefWidth="1200.0"> maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
<columnConstraints> prefWidth="1200.0" style="-fx-background-color: skyblue;" xmlns="http://javafx.com/javafx/8.0.111"
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0" xmlns:fx="http://javafx.com/fxml/1">
prefWidth="250.0"/> <children>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/> <GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0" prefHeight="800.0" prefWidth="1200.0">
prefWidth="400.0"/> <columnConstraints>
</columnConstraints> <ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0"
<rowConstraints> prefWidth="250.0"/>
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/>
vgrow="SOMETIMES"/> <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0"
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/> prefWidth="400.0"/>
<RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0" </columnConstraints>
valignment="BOTTOM" vgrow="SOMETIMES"/> <rowConstraints>
</rowConstraints> <RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0"
<children> vgrow="SOMETIMES"/>
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer"> <RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
<columnConstraints> <RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0"
<ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0" valignment="BOTTOM" vgrow="SOMETIMES"/>
prefWidth="50.0"/> </rowConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0" <children>
prefWidth="135.0"/> <GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
</columnConstraints> <columnConstraints>
<rowConstraints> <ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0"
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> prefWidth="50.0"/>
</rowConstraints> <ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0"
<opaqueInsets> prefWidth="135.0"/>
<Insets/> </columnConstraints>
</opaqueInsets> <rowConstraints>
<GridPane.margin> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<Insets left="10.0" right="200.0" top="10.0"/> </rowConstraints>
</GridPane.margin> <opaqueInsets>
<children> <Insets/>
<ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true" </opaqueInsets>
preserveRatio="true" GridPane.halignment="CENTER" <GridPane.margin>
GridPane.valignment="CENTER"> <Insets left="10.0" right="200.0" top="10.0"/>
<image> </GridPane.margin>
<Image url="@../images/timer.png"/> <children>
</image> <ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true"
<GridPane.margin> preserveRatio="true" GridPane.halignment="CENTER"
<Insets/> GridPane.valignment="CENTER">
</GridPane.margin> <image>
</ImageView> <Image url="@../images/timer.png"/>
<Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1" </image>
GridPane.halignment="CENTER" GridPane.valignment="CENTER"> <GridPane.margin>
<font> <Insets/>
<Font size="21.0"/> </GridPane.margin>
</font> </ImageView>
<GridPane.margin> <Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1"
<Insets/> GridPane.halignment="CENTER" GridPane.valignment="CENTER">
</GridPane.margin> <font>
</Label> <Font size="21.0"/>
</children> </font>
</GridPane> <GridPane.margin>
<GridPane GridPane.columnIndex="2"> <Insets/>
<columnConstraints> </GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </Label>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </children>
</columnConstraints> </GridPane>
<rowConstraints> <GridPane GridPane.columnIndex="2">
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <columnConstraints>
</rowConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</GridPane> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2"> </columnConstraints>
<columnConstraints> <rowConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0" <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
prefWidth="390.0"/> </rowConstraints>
</columnConstraints> </GridPane>
<rowConstraints> <GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/> <columnConstraints>
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0"
vgrow="SOMETIMES"/> prefWidth="390.0"/>
</rowConstraints> </columnConstraints>
<children> <rowConstraints>
<Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0" <RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/>
GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM" <RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0"
GridPane.vgrow="ALWAYS"> vgrow="SOMETIMES"/>
<GridPane.margin> </rowConstraints>
<Insets/> <children>
</GridPane.margin> <Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0"
<padding> GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM"
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/> GridPane.vgrow="ALWAYS">
</padding> <GridPane.margin>
</Pane> <Insets/>
<GridPane fx:id="chatInputHolder" GridPane.rowIndex="1"> </GridPane.margin>
<columnConstraints> <padding>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
prefWidth="100.0"/> </padding>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" </Pane>
minWidth="90.0" prefWidth="90.0"/> <GridPane fx:id="chatInputHolder" GridPane.rowIndex="1">
</columnConstraints> <columnConstraints>
<rowConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
<RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0" prefWidth="100.0"/>
valignment="CENTER" vgrow="SOMETIMES"/> <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity"
</rowConstraints> minWidth="90.0" prefWidth="90.0"/>
<children> </columnConstraints>
<JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED" <rowConstraints>
focusTraversable="false" maxHeight="-Infinity" <RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0"
maxWidth="1.7976931348623157E308" minHeight="-Infinity" valignment="CENTER" vgrow="SOMETIMES"/>
minWidth="-Infinity" prefHeight="35.0" text="SEND" </rowConstraints>
GridPane.columnIndex="1"> <children>
<GridPane.margin> <JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED"
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/> focusTraversable="false" maxHeight="-Infinity"
</GridPane.margin> maxWidth="1.7976931348623157E308" minHeight="-Infinity"
</JFXButton> minWidth="-Infinity" prefHeight="35.0" text="SEND"
<JFXTextField fx:id="chatInput" focusTraversable="false" GridPane.columnIndex="1">
maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0"> <GridPane.margin>
<GridPane.margin> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
<Insets bottom="10.0" left="20.0" right="10.0"/> </GridPane.margin>
</GridPane.margin> </JFXButton>
<padding> <JFXTextField fx:id="chatInput" focusTraversable="false"
<Insets right="15.0"/> maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0">
</padding> <GridPane.margin>
</JFXTextField> <Insets bottom="10.0" left="20.0" right="10.0"/>
</children> </GridPane.margin>
<GridPane.margin> <padding>
<Insets top="10.0"/> <Insets right="15.0"/>
</GridPane.margin> </padding>
</GridPane> </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> <opaqueInsets>
</Label> <Insets/>
<Label fx:id="boatHeadingLabel" text="Boat Heading:" </opaqueInsets>
GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2" <padding>
GridPane.valignment="BOTTOM"> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
<padding> </padding>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> </Label>
</padding> <Label fx:id="boatHeadingLabel" text="Boat Heading:"
</Label> GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2"
<GridPane fx:id="windHolder" GridPane.rowSpan="2"> GridPane.valignment="BOTTOM">
<columnConstraints> <padding>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/>
prefWidth="100.0"/> </padding>
</columnConstraints> </Label>
<rowConstraints> <GridPane fx:id="windHolder" GridPane.rowSpan="2">
<RowConstraints maxHeight="120.0" minHeight="120.0" <columnConstraints>
prefHeight="120.0" vgrow="SOMETIMES"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" prefWidth="100.0"/>
vgrow="SOMETIMES"/> </columnConstraints>
</rowConstraints> <rowConstraints>
<children> <RowConstraints maxHeight="120.0" minHeight="120.0"
<ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0" prefHeight="120.0" vgrow="SOMETIMES"/>
pickOnBounds="true" preserveRatio="true" <RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0"
GridPane.halignment="CENTER" GridPane.rowSpan="2" vgrow="SOMETIMES"/>
GridPane.valignment="CENTER"/> </rowConstraints>
<Label fx:id="windSpeedLabel" text="0.0 Knots" <children>
GridPane.halignment="RIGHT" GridPane.rowIndex="1" <ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0"
GridPane.valignment="CENTER"> pickOnBounds="true" preserveRatio="true"
<GridPane.margin> GridPane.halignment="CENTER" GridPane.rowSpan="2"
<Insets right="5.0"/> GridPane.valignment="CENTER"/>
</GridPane.margin> <Label fx:id="windSpeedLabel" text="0.0 Knots"
</Label> GridPane.halignment="RIGHT" GridPane.rowIndex="1"
<Label fx:id="windDirectionLabel" text="180.0°" GridPane.valignment="CENTER">
GridPane.halignment="LEFT" GridPane.rowIndex="1" <GridPane.margin>
GridPane.valignment="CENTER"> <Insets right="5.0"/>
<GridPane.margin> </GridPane.margin>
<Insets left="5.0"/> </Label>
</GridPane.margin> <Label fx:id="windDirectionLabel" text="180.0°"
</Label> GridPane.halignment="LEFT" GridPane.rowIndex="1"
</children> GridPane.valignment="CENTER">
</GridPane> <GridPane.margin>
</children> <Insets left="5.0"/>
<opaqueInsets> </GridPane.margin>
<Insets/> </Label>
</opaqueInsets> </children>
<GridPane.margin> </GridPane>
<Insets bottom="10.0" left="10.0" top="40.0"/> </children>
</GridPane.margin> <opaqueInsets>
</GridPane> <Insets/>
<GridPane GridPane.columnIndex="1" GridPane.rowIndex="2"> </opaqueInsets>
<columnConstraints> <GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <Insets bottom="10.0" left="10.0" top="40.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </GridPane.margin>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> </GridPane>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <GridPane GridPane.columnIndex="1" GridPane.rowIndex="2">
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/> <columnConstraints>
</columnConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<rowConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
vgrow="SOMETIMES"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0" <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
vgrow="SOMETIMES"/> </columnConstraints>
</rowConstraints> <rowConstraints>
<children> <RowConstraints maxHeight="152.0" minHeight="10.0" prefHeight="152.0"
<ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0" vgrow="SOMETIMES"/>
pickOnBounds="true" preserveRatio="true" visible="false" <RowConstraints maxHeight="118.0" minHeight="10.0" prefHeight="98.0"
GridPane.halignment="CENTER" GridPane.rowIndex="1"> vgrow="SOMETIMES"/>
<image> </rowConstraints>
<Image url="@../icons/velocity.png"/> <children>
</image> <ImageView fx:id="velocityIcon" fitHeight="88.0" fitWidth="106.0"
</ImageView> pickOnBounds="true" preserveRatio="true" visible="false"
<ImageView fx:id="handlingIcon" fitHeight="87.0" fitWidth="98.0" GridPane.halignment="CENTER" GridPane.rowIndex="1">
pickOnBounds="true" preserveRatio="true" visible="false" <image>
GridPane.columnIndex="1" GridPane.halignment="CENTER" <Image url="@../icons/velocity.png"/>
GridPane.rowIndex="1"> </image>
<image> </ImageView>
<Image url="@../icons/handlingIcon.png"/> <ImageView fx:id="handlingIcon" fitHeight="87.0" fitWidth="98.0"
</image> pickOnBounds="true" preserveRatio="true" visible="false"
</ImageView> GridPane.columnIndex="1" GridPane.halignment="CENTER"
<ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0" GridPane.rowIndex="1">
pickOnBounds="true" preserveRatio="true" visible="false" <image>
GridPane.columnIndex="2" GridPane.halignment="CENTER" <Image url="@../icons/handlingIcon.png"/>
GridPane.rowIndex="1"> </image>
<image> </ImageView>
<Image url="@../icons/windWalkerIcon.png"/> <ImageView fx:id="windWalkerIcon" fitHeight="83.0" fitWidth="100.0"
</image> pickOnBounds="true" preserveRatio="true" visible="false"
</ImageView> GridPane.columnIndex="2" GridPane.halignment="CENTER"
<ImageView fx:id="bumperIcon" fitHeight="83.0" fitWidth="88.0" GridPane.rowIndex="1">
pickOnBounds="true" preserveRatio="true" visible="false" <image>
GridPane.columnIndex="3" GridPane.halignment="CENTER" <Image url="@../icons/windWalkerIcon.png"/>
GridPane.rowIndex="1"> </image>
<image> </ImageView>
<Image url="@../icons/bumperIcon.png"/> <ImageView fx:id="bumperIcon" fitHeight="83.0" fitWidth="88.0"
</image> pickOnBounds="true" preserveRatio="true" visible="false"
</ImageView> GridPane.columnIndex="3" GridPane.halignment="CENTER"
<ImageView fx:id="badRandomIcon" fitHeight="69.0" fitWidth="103.0" GridPane.rowIndex="1">
pickOnBounds="true" preserveRatio="true" visible="false" <image>
GridPane.columnIndex="4" GridPane.halignment="CENTER" <Image url="@../icons/bumperIcon.png"/>
GridPane.rowIndex="1" GridPane.valignment="CENTER"> </image>
<image> </ImageView>
<Image url="@../icons/slowedIcon.png"/> <ImageView fx:id="badRandomIcon" fitHeight="69.0" fitWidth="103.0"
</image> pickOnBounds="true" preserveRatio="true" visible="false"
</ImageView> GridPane.columnIndex="4" GridPane.halignment="CENTER"
</children> GridPane.rowIndex="1" GridPane.valignment="CENTER">
</GridPane> <image>
</children> <Image url="@../icons/slowedIcon.png"/>
</GridPane> </image>
</ImageView>
</children>
</GridPane>
</children>
</GridPane>
</children>
</StackPane>
</children> </children>
<AnchorPane fx:id="loadingScreenPane">
<children>
<ImageView fx:id="loadingScreen" fitHeight="672.0" fitWidth="1200.0" pickOnBounds="true" preserveRatio="true" />
<JFXSpinner layoutX="566.0" layoutY="692.0" radius="30.0" />
</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"/>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<StackPane id="background" fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.SplashScreenController">
<stylesheets>
<String fx:value="/css/Master.css" />
<String fx:value="/css/SplashScreenView.css" />
</stylesheets>
<children>
<ImageView fitHeight="296.0" fitWidth="295.0" pickOnBounds="true" preserveRatio="true" StackPane.alignment="TOP_CENTER">
<image>
<Image url="@../PP.png" />
</image>
<StackPane.margin>
<Insets top="20.0" />
</StackPane.margin>
</ImageView>
<Text fx:id="headText" strokeType="OUTSIDE" strokeWidth="0.0" text="Party Parrots at Sea" StackPane.alignment="BOTTOM_CENTER">
<font>
<Font name="System Bold" size="42.0" />
</font>
<StackPane.margin>
<Insets bottom="20.0" />
</StackPane.margin>
</Text>
</children>
</StackPane>