Added splash and loading screen

This commit is contained in:
Kusal Ekanayake
2017-09-26 17:07:02 +13:00
parent 7027de80c4
commit 98abe64f00
9 changed files with 336 additions and 234 deletions
+1 -1
View File
@@ -63,7 +63,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);
} }
@@ -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();
}
} }
@@ -275,12 +275,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());
} }
}); });
} }
} }
@@ -27,12 +27,8 @@ import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart; import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Data; import javafx.scene.chart.XYChart.Data;
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;
@@ -68,6 +64,10 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
private final int CHAT_LIMIT = 128; private final int CHAT_LIMIT = 128;
@FXML
private AnchorPane loadingScreenPane;
@FXML
private ImageView loadingScreen;
@FXML @FXML
private Pane basePane; private Pane basePane;
@FXML @FXML
@@ -131,6 +131,24 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
private FinishDialogController finishDialogController; private FinishDialogController finishDialogController;
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();
@@ -202,6 +220,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(1000);
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();
}
}
}
}
@@ -21,6 +21,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;
@@ -55,10 +56,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.
*/ */
@@ -66,7 +75,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;
}
+183 -224
View File
@@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.*?>
<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import com.jfoenix.controls.JFXButton?> <?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextField?> <?import com.jfoenix.controls.JFXTextField?>
<?import java.lang.String?> <?import java.lang.String?>
@@ -14,232 +21,184 @@
<?import javafx.scene.layout.RowConstraints?> <?import javafx.scene.layout.RowConstraints?>
<?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"
maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" <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">
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> <children>
<GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" <StackPane fx:id="contentStackPane" prefHeight="150.0" prefWidth="200.0">
prefHeight="800.0" prefWidth="1200.0"> <children>
<columnConstraints> <GridPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="800.0" prefWidth="1200.0">
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0" <columnConstraints>
prefWidth="250.0"/> <ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="250.0" prefWidth="250.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308"/> <ColumnConstraints hgrow="SOMETIMES" maxWidth="1.7976931348623157E308" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="400.0" prefWidth="400.0" />
prefWidth="400.0"/> </columnConstraints>
</columnConstraints> <rowConstraints>
<rowConstraints> <RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="70.0" minHeight="70.0" prefHeight="70.0" <RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES" />
vgrow="SOMETIMES"/> <RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0" valignment="BOTTOM" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES"/> </rowConstraints>
<RowConstraints maxHeight="250.0" minHeight="250.0" prefHeight="250.0" <children>
valignment="BOTTOM" vgrow="SOMETIMES"/> <GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" styleClass="timer">
</rowConstraints> <columnConstraints>
<children> <ColumnConstraints hgrow="SOMETIMES" maxWidth="50.0" minWidth="50.0" prefWidth="50.0" />
<GridPane id="timerGrid" fx:id="timerGrid" prefWidth="192.0" <ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="135.0" prefWidth="135.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" <opaqueInsets>
minWidth="135.0" prefWidth="135.0"/> <Insets />
</columnConstraints> </opaqueInsets>
<rowConstraints> <GridPane.margin>
<RowConstraints minHeight="10.0" prefHeight="30.0" <Insets left="10.0" right="200.0" top="10.0" />
vgrow="SOMETIMES"/> </GridPane.margin>
</rowConstraints> <children>
<opaqueInsets> <ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true" preserveRatio="true" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
<Insets/> <image>
</opaqueInsets> <Image url="@../images/timer.png" />
<GridPane.margin> </image>
<Insets left="10.0" right="200.0" top="10.0"/> <GridPane.margin>
</GridPane.margin> <Insets />
<children> </GridPane.margin>
<ImageView fitHeight="40.0" fitWidth="40.0" pickOnBounds="true" </ImageView>
preserveRatio="true" GridPane.halignment="CENTER" <Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
GridPane.valignment="CENTER"> <font>
<image> <Font size="21.0" />
<Image url="@../images/timer.png"/> </font>
</image> <GridPane.margin>
<GridPane.margin> <Insets />
<Insets/> </GridPane.margin>
</GridPane.margin> </Label>
</ImageView> </children>
<Label fx:id="timerLabel" text="00:03:34" GridPane.columnIndex="1" </GridPane>
GridPane.halignment="CENTER" GridPane.valignment="CENTER"> <GridPane GridPane.columnIndex="2">
<font> <columnConstraints>
<Font size="21.0"/> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</font> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<GridPane.margin> </columnConstraints>
<Insets/> <rowConstraints>
</GridPane.margin> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</Label> </rowConstraints>
</children> </GridPane>
</GridPane> <GridPane fx:id="chatGridPane" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane GridPane.columnIndex="2"> <columnConstraints>
<columnConstraints> <ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" minWidth="390.0" prefWidth="390.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" </columnConstraints>
prefWidth="100.0"/> <rowConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" <RowConstraints maxHeight="1.7976931348623157E308" vgrow="SOMETIMES" />
prefWidth="100.0"/> <RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0" vgrow="SOMETIMES" />
</columnConstraints> </rowConstraints>
<rowConstraints> <children>
<RowConstraints minHeight="10.0" prefHeight="30.0" <Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0" GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM" GridPane.vgrow="ALWAYS">
vgrow="SOMETIMES"/> <GridPane.margin>
</rowConstraints> <Insets />
</GridPane> </GridPane.margin>
<GridPane fx:id="chatGridPane" GridPane.columnIndex="2" <padding>
GridPane.rowIndex="2"> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
<columnConstraints> </padding>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="390.0" </Pane>
minWidth="390.0" prefWidth="390.0"/> <GridPane fx:id="chatInputHolder" GridPane.rowIndex="1">
</columnConstraints> <columnConstraints>
<rowConstraints> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<RowConstraints maxHeight="1.7976931348623157E308" <ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" minWidth="90.0" prefWidth="90.0" />
vgrow="SOMETIMES"/> </columnConstraints>
<RowConstraints maxHeight="60.0" minHeight="60.0" prefHeight="60.0" <rowConstraints>
vgrow="SOMETIMES"/> <RowConstraints maxHeight="50.0" minHeight="50.0" prefHeight="50.0" valignment="CENTER" vgrow="SOMETIMES" />
</rowConstraints> </rowConstraints>
<children> <children>
<Pane fx:id="chatHistoryHolder" prefHeight="200.0" prefWidth="200.0" <JFXButton fx:id="chatSend" alignment="CENTER" buttonType="RAISED" maxHeight="-Infinity" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="35.0" text="SEND" GridPane.columnIndex="1">
GridPane.hgrow="ALWAYS" GridPane.valignment="BOTTOM" <GridPane.margin>
GridPane.vgrow="ALWAYS"> <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
<GridPane.margin> </GridPane.margin>
<Insets/> </JFXButton>
</GridPane.margin> <JFXTextField fx:id="chatInput" maxHeight="35.0" minHeight="-Infinity" prefHeight="35.0">
<padding> <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" />
</padding> </GridPane.margin>
</Pane> <padding>
<GridPane fx:id="chatInputHolder" GridPane.rowIndex="1"> <Insets right="15.0" />
<columnConstraints> </padding>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" </JFXTextField>
prefWidth="100.0"/> </children>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="-Infinity" <GridPane.margin>
minWidth="90.0" prefWidth="90.0"/> <Insets top="10.0" />
</columnConstraints> </GridPane.margin>
<rowConstraints> </GridPane>
<RowConstraints maxHeight="50.0" minHeight="50.0" </children>
prefHeight="50.0" valignment="CENTER" vgrow="SOMETIMES"/> <GridPane.margin>
</rowConstraints> <Insets bottom="10.0" right="10.0" />
<children> </GridPane.margin>
<JFXButton fx:id="chatSend" alignment="CENTER" </GridPane>
buttonType="RAISED" maxHeight="-Infinity" <GridPane fx:id="windGridPane" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER" GridPane.rowIndex="2" GridPane.valignment="BOTTOM">
maxWidth="1.7976931348623157E308" minHeight="-Infinity" <columnConstraints>
minWidth="-Infinity" prefHeight="35.0" text="SEND" <ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="110.0" prefWidth="110.0" />
GridPane.columnIndex="1"> <ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" minWidth="10.0" prefWidth="132.0" />
<GridPane.margin> </columnConstraints>
<Insets bottom="10.0" left="10.0" right="10.0" <rowConstraints>
top="10.0"/> <RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0" vgrow="SOMETIMES" />
</GridPane.margin> <RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
</JFXButton> </rowConstraints>
<JFXTextField fx:id="chatInput" maxHeight="35.0" <children>
minHeight="-Infinity" prefHeight="35.0"> <Label fx:id="positionLabel" text="Position:" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="TOP">
<GridPane.margin> <padding>
<Insets bottom="10.0" left="20.0" right="10.0"/> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
</GridPane.margin> </padding>
<padding> </Label>
<Insets right="15.0"/> <Label fx:id="boatSpeedLabel" text="Boat Speed:" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="CENTER">
</padding> <opaqueInsets>
</JFXTextField> <Insets />
</children> </opaqueInsets>
<GridPane.margin> <padding>
<Insets top="10.0"/> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
</GridPane.margin> </padding>
</GridPane> </Label>
</children> <Label fx:id="boatHeadingLabel" text="Boat Heading:" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowSpan="2" GridPane.valignment="BOTTOM">
<GridPane.margin> <padding>
<Insets bottom="10.0" right="10.0"/> <Insets bottom="5.0" left="10.0" right="5.0" top="5.0" />
</GridPane.margin> </padding>
</GridPane> </Label>
<GridPane fx:id="windGridPane" maxHeight="-Infinity" maxWidth="-Infinity" <GridPane fx:id="windHolder" GridPane.rowSpan="2">
prefHeight="150.0" prefWidth="240.0" GridPane.halignment="CENTER" <columnConstraints>
GridPane.rowIndex="2" GridPane.valignment="BOTTOM"> <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<columnConstraints> </columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" <rowConstraints>
minWidth="110.0" prefWidth="110.0"/> <RowConstraints maxHeight="120.0" minHeight="120.0" prefHeight="120.0" vgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="132.0" <RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
minWidth="10.0" </rowConstraints>
prefWidth="132.0"/> <children>
</columnConstraints> <ImageView fx:id="windImageView" fitHeight="92.0" fitWidth="109.0" pickOnBounds="true" preserveRatio="true" GridPane.halignment="CENTER" GridPane.rowSpan="2" GridPane.valignment="CENTER" />
<rowConstraints> <Label fx:id="windSpeedLabel" text="0.0 Knots" GridPane.halignment="RIGHT" GridPane.rowIndex="1" GridPane.valignment="CENTER">
<RowConstraints maxHeight="120.0" minHeight="120.0" <GridPane.margin>
prefHeight="120.0" vgrow="SOMETIMES"/> <Insets right="5.0" />
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" </GridPane.margin>
vgrow="SOMETIMES"/> </Label>
</rowConstraints> <Label fx:id="windDirectionLabel" text="180.0°" GridPane.halignment="LEFT" GridPane.rowIndex="1" GridPane.valignment="CENTER">
<children> <GridPane.margin>
<Label fx:id="positionLabel" text="Position:" <Insets left="5.0" />
GridPane.columnIndex="1" GridPane.halignment="LEFT" </GridPane.margin>
GridPane.rowSpan="2" GridPane.valignment="TOP"> </Label>
<padding> </children>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> </GridPane>
</padding> </children>
</Label> <opaqueInsets>
<Label fx:id="boatSpeedLabel" text="Boat Speed:" <Insets />
GridPane.columnIndex="1" GridPane.halignment="LEFT" </opaqueInsets>
GridPane.rowSpan="2" GridPane.valignment="CENTER"> <GridPane.margin>
<opaqueInsets> <Insets bottom="10.0" left="10.0" top="40.0" />
<Insets/> </GridPane.margin>
</opaqueInsets> </GridPane>
<padding> </children>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> </GridPane>
</padding> </children>
</Label> </StackPane>
<Label fx:id="boatHeadingLabel" text="Boat Heading:" <AnchorPane fx:id="loadingScreenPane">
GridPane.columnIndex="1" GridPane.halignment="LEFT" <children>
GridPane.rowSpan="2" GridPane.valignment="BOTTOM"> <ImageView fx:id="loadingScreen" fitHeight="800.0" fitWidth="1200.0" pickOnBounds="true" preserveRatio="true" />
<padding> </children>
<Insets bottom="5.0" left="10.0" right="5.0" top="5.0"/> </AnchorPane>
</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>
<Insets/>
</opaqueInsets>
<GridPane.margin>
<Insets bottom="10.0" left="10.0" top="40.0"/>
</GridPane.margin>
</GridPane>
</children>
</GridPane>
</children> </children>
<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" />
</stylesheets> </stylesheets>
</StackPane> </StackPane>
@@ -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>