mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # src/main/java/seng302/visualiser/controllers/RaceViewController.java
This commit is contained in:
@@ -5,9 +5,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
@@ -17,7 +15,6 @@ import javafx.collections.FXCollections;
|
|||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyEvent;
|
import javafx.scene.input.KeyEvent;
|
||||||
import javafx.scene.layout.Pane;
|
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.util.Pair;
|
import javafx.util.Pair;
|
||||||
import seng302.gameServer.GameStages;
|
import seng302.gameServer.GameStages;
|
||||||
@@ -55,7 +52,6 @@ import seng302.visualiser.controllers.dialogs.PopupDialogController;
|
|||||||
*/
|
*/
|
||||||
public class GameClient {
|
public class GameClient {
|
||||||
|
|
||||||
private Pane holderPane;
|
|
||||||
private ClientToServerThread socketThread;
|
private ClientToServerThread socketThread;
|
||||||
private MainServerThread server;
|
private MainServerThread server;
|
||||||
|
|
||||||
@@ -77,10 +73,8 @@ public class GameClient {
|
|||||||
/**
|
/**
|
||||||
* Create an instance of the game client. Does not do anything until run with runAsClient()
|
* Create an instance of the game client. Does not do anything until run with runAsClient()
|
||||||
* runAsHost().
|
* runAsHost().
|
||||||
* @param holder The JavaFX Pane that the visual elements for the race will be inserted into.
|
|
||||||
*/
|
*/
|
||||||
public GameClient(Pane holder) {
|
public GameClient() {
|
||||||
this.holderPane = holder;
|
|
||||||
this.gameKeyBind = GameKeyBind.getInstance();
|
this.gameKeyBind = GameKeyBind.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,10 +112,7 @@ public class GameClient {
|
|||||||
ViewManager.getInstance().setProperty("serverName", regattaData.getRegattaName());
|
ViewManager.getInstance().setProperty("serverName", regattaData.getRegattaName());
|
||||||
ViewManager.getInstance().setProperty("mapName", regattaData.getCourseName());
|
ViewManager.getInstance().setProperty("mapName", regattaData.getCourseName());
|
||||||
|
|
||||||
getServerThread().setConnectionErrorListener((eMessage) -> {
|
getServerThread().setConnectionErrorListener((eMessage) -> ViewManager.getInstance().showErrorSnackBar(eMessage));
|
||||||
ViewManager.getInstance().showErrorSnackBar(eMessage);
|
|
||||||
//destroyClientToServerThread();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.lobbyController = ViewManager.getInstance().goToLobby(true);
|
this.lobbyController = ViewManager.getInstance().goToLobby(true);
|
||||||
|
|
||||||
@@ -132,18 +123,11 @@ public class GameClient {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void destroyClientToServerThread() {
|
|
||||||
socketThread.closeSocket();
|
|
||||||
socketThread = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connect to a game as the host at the given address and starts the visualiser.
|
* Connect to a game as the host at the given address and starts the visualiser.
|
||||||
* @param ipAddress IP to connect to.
|
|
||||||
* @param portNumber Port to connect to.
|
|
||||||
*/
|
*/
|
||||||
public ServerDescription runAsHost(
|
public ServerDescription runAsHost(
|
||||||
String ipAddress, Integer portNumber, String serverName, Integer maxPlayers, String race,
|
String serverName, Integer maxPlayers, String race,
|
||||||
Integer numLegs, Boolean tokensEnabled
|
Integer numLegs, Boolean tokensEnabled
|
||||||
) {
|
) {
|
||||||
XMLGenerator.setDefaultRaceName(serverName);
|
XMLGenerator.setDefaultRaceName(serverName);
|
||||||
@@ -159,7 +143,7 @@ public class GameClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
startClientToServerThread(ipAddress, 4942);
|
startClientToServerThread("localhost", 4942);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
showConnectionError("Cannot connect to server as host");
|
showConnectionError("Cannot connect to server as host");
|
||||||
}
|
}
|
||||||
@@ -194,7 +178,8 @@ public class GameClient {
|
|||||||
this.lobbyController = ViewManager.getInstance().goToLobby(false);
|
this.lobbyController = ViewManager.getInstance().goToLobby(false);
|
||||||
|
|
||||||
ViewManager.getInstance().setPlayerList(clientLobbyList);
|
ViewManager.getInstance().setPlayerList(clientLobbyList);
|
||||||
return new ServerDescription(serverName, regattaData.getCourseName(), GameState.getNumberOfPlayers(), GameState.getCapacity(), ipAddress, 4942);
|
return new ServerDescription(serverName, regattaData.getCourseName(), GameState.getNumberOfPlayers(), GameState.getCapacity(),
|
||||||
|
"localhost", 4942);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tearDownConnection() {
|
private void tearDownConnection() {
|
||||||
@@ -297,6 +282,7 @@ public class GameClient {
|
|||||||
case CHATTER_TEXT:
|
case CHATTER_TEXT:
|
||||||
Pair<Integer, String> playerIdMessagePair = StreamParser
|
Pair<Integer, String> playerIdMessagePair = StreamParser
|
||||||
.extractChatterText(packet);
|
.extractChatterText(packet);
|
||||||
|
if (playerIdMessagePair != null) {
|
||||||
raceView.updateChatHistory(
|
raceView.updateChatHistory(
|
||||||
allBoatsMap.get(playerIdMessagePair.getKey()).getColour(),
|
allBoatsMap.get(playerIdMessagePair.getKey()).getColour(),
|
||||||
playerIdMessagePair.getValue()
|
playerIdMessagePair.getValue()
|
||||||
@@ -304,6 +290,7 @@ public class GameClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void startRaceIfAllDataReceived() {
|
private void startRaceIfAllDataReceived() {
|
||||||
if (allXMLReceived() && raceView == null) {
|
if (allXMLReceived() && raceView == null) {
|
||||||
@@ -337,8 +324,6 @@ public class GameClient {
|
|||||||
positionData.getLon(), positionData.getHeading(),
|
positionData.getLon(), positionData.getHeading(),
|
||||||
positionData.getGroundSpeed());
|
positionData.getGroundSpeed());
|
||||||
}
|
}
|
||||||
} else if (positionData.getType() == DeviceType.MARK_TYPE) {
|
|
||||||
//CompoundMark mark = courseData.getCompoundMarks().get(positionData.getDeviceId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,21 +361,17 @@ public class GameClient {
|
|||||||
ClientYacht clientYacht = allBoatsMap.get((int) boatData[0]);
|
ClientYacht clientYacht = allBoatsMap.get((int) boatData[0]);
|
||||||
clientYacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]);
|
clientYacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]);
|
||||||
clientYacht.setEstimateTimeAtFinish(boatData[2]);
|
clientYacht.setEstimateTimeAtFinish(boatData[2]);
|
||||||
// int legNumber = (int) boatData[3];
|
|
||||||
clientYacht.setBoatStatus((int) boatData[4]);
|
clientYacht.setBoatStatus((int) boatData[4]);
|
||||||
// if (legNumber != clientYacht.getLegNumber()) {
|
|
||||||
// clientYacht.setLegNumber(legNumber);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raceFinished) {
|
if (raceFinished && !raceState.getRaceFinished()) {
|
||||||
raceViewController.showFinishDialog(finishedBoats);
|
raceState.setRaceFinished();
|
||||||
Sounds.playFinishSound();
|
Sounds.playFinishSound();
|
||||||
close();
|
raceViewController.showFinishDialog(finishedBoats);
|
||||||
ViewManager.getInstance().getGameClient().stopGame();
|
// close();
|
||||||
|
// ViewManager.getInstance().getGameClient().stopGame();
|
||||||
//loadFinishScreenView();
|
//loadFinishScreenView();
|
||||||
}
|
}
|
||||||
raceState.setRaceFinished();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,10 +382,6 @@ public class GameClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void close() {
|
|
||||||
socketThread.setSocketToClose();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the key-pressed event from the text field.
|
* Handle the key-pressed event from the text field.
|
||||||
* @param e The key event triggering this call
|
* @param e The key event triggering this call
|
||||||
@@ -531,10 +508,6 @@ public class GameClient {
|
|||||||
return socketThread;
|
return socketThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getPlayerNames(){
|
|
||||||
return Collections.unmodifiableList(clientLobbyList.sorted());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stopGame() {
|
public void stopGame() {
|
||||||
GameState.setCurrentStage(GameStages.CANCELLED);
|
GameState.setCurrentStage(GameStages.CANCELLED);
|
||||||
if (server != null) server.terminate();
|
if (server != null) server.terminate();
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ public class GameView3D extends GameView {
|
|||||||
for (ObservableValue o : Arrays
|
for (ObservableValue o : Arrays
|
||||||
.asList(playerBoat.layoutXProperty(), playerBoat.layoutXProperty())) {
|
.asList(playerBoat.layoutXProperty(), playerBoat.layoutXProperty())) {
|
||||||
o.addListener((obs, oldVal, newVal) -> {
|
o.addListener((obs, oldVal, newVal) -> {
|
||||||
|
if (playerYacht.getLegNumber() < course.size()) {
|
||||||
List<Mark> marks = course.get(playerYacht.getLegNumber()).getMarks();
|
List<Mark> marks = course.get(playerYacht.getLegNumber()).getMarks();
|
||||||
Point2D midPoint = new Point2D(0, 0);
|
Point2D midPoint = new Point2D(0, 0);
|
||||||
if (marks.size() == 1) {
|
if (marks.size() == 1) {
|
||||||
@@ -363,6 +363,7 @@ public class GameView3D extends GameView {
|
|||||||
if (midPoint != null) {
|
if (midPoint != null) {
|
||||||
playerBoat.updateMarkIndicator(midPoint);
|
playerBoat.updateMarkIndicator(midPoint);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,97 +0,0 @@
|
|||||||
package seng302.visualiser.controllers;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.ResourceBundle;
|
|
||||||
import javafx.collections.FXCollections;
|
|
||||||
import javafx.collections.ObservableList;
|
|
||||||
import javafx.fxml.FXML;
|
|
||||||
import javafx.fxml.FXMLLoader;
|
|
||||||
import javafx.fxml.Initializable;
|
|
||||||
import javafx.scene.control.TableColumn;
|
|
||||||
import javafx.scene.control.TableView;
|
|
||||||
import javafx.scene.control.cell.PropertyValueFactory;
|
|
||||||
import javafx.scene.input.MouseEvent;
|
|
||||||
import javafx.scene.layout.AnchorPane;
|
|
||||||
import javafx.scene.layout.GridPane;
|
|
||||||
import javafx.scene.layout.Pane;
|
|
||||||
import seng302.model.ClientYacht;
|
|
||||||
import seng302.utilities.Sounds;
|
|
||||||
|
|
||||||
public class FinishScreenViewController implements Initializable {
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private GridPane finishScreenGridPane;
|
|
||||||
@FXML
|
|
||||||
private TableView<ClientYacht> finishOrderTable;
|
|
||||||
@FXML
|
|
||||||
private TableColumn<ClientYacht, String> posCol;
|
|
||||||
@FXML
|
|
||||||
private TableColumn<ClientYacht, String> boatNameCol;
|
|
||||||
@FXML
|
|
||||||
private TableColumn<ClientYacht, String> shortNameCol;
|
|
||||||
@FXML
|
|
||||||
private TableColumn<ClientYacht, String> countryCol;
|
|
||||||
|
|
||||||
ObservableList<ClientYacht> data = FXCollections.observableArrayList();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
|
||||||
finishScreenGridPane.getStylesheets()
|
|
||||||
.add(getClass().getResource("/css/Master.css").toString());
|
|
||||||
finishOrderTable.getStylesheets().add(getClass().getResource("/css/Master.css").toString());
|
|
||||||
|
|
||||||
// set up data for table
|
|
||||||
finishOrderTable.setItems(data);
|
|
||||||
|
|
||||||
// setting table col data
|
|
||||||
posCol.setCellValueFactory(
|
|
||||||
new PropertyValueFactory<>("position")
|
|
||||||
);
|
|
||||||
boatNameCol.setCellValueFactory(
|
|
||||||
new PropertyValueFactory<>("boatName")
|
|
||||||
);
|
|
||||||
shortNameCol.setCellValueFactory(
|
|
||||||
new PropertyValueFactory<>("shortName")
|
|
||||||
);
|
|
||||||
countryCol.setCellValueFactory(
|
|
||||||
new PropertyValueFactory<>("country")
|
|
||||||
);
|
|
||||||
finishOrderTable.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFinishers(Collection<ClientYacht> participants) {
|
|
||||||
List<ClientYacht> sorted = new ArrayList<>(participants);
|
|
||||||
sorted.sort(Comparator.comparingInt(ClientYacht::getPlacing));
|
|
||||||
finishOrderTable.getItems().setAll(sorted);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setContentPane(String jfxUrl) {
|
|
||||||
try {
|
|
||||||
// get the main controller anchor pane (FinishView -> MainView)
|
|
||||||
AnchorPane contentPane = (AnchorPane) finishScreenGridPane.getParent();
|
|
||||||
contentPane.getChildren().removeAll();
|
|
||||||
contentPane.getChildren().clear();
|
|
||||||
contentPane.getStylesheets().add(getClass().getResource("/css/master.css").toString());
|
|
||||||
contentPane.getChildren()
|
|
||||||
.addAll((Pane) FXMLLoader.load(getClass().getResource(jfxUrl)));
|
|
||||||
} catch (javafx.fxml.LoadException e) {
|
|
||||||
System.out.println("[Controller] FXML load exception");
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.out.println("[Controller] IO exception");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void switchToStartScreenView() {
|
|
||||||
Sounds.playButtonClick();
|
|
||||||
setContentPane("/views/StartScreenView.fxml");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void playButtonHoverSound(MouseEvent mouseEvent) {
|
|
||||||
Sounds.playHoverSound();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -146,12 +146,7 @@ public class RaceViewController extends Thread {
|
|||||||
contentStackPane.setVisible(true);
|
contentStackPane.setVisible(true);
|
||||||
miniMapPane.setVisible(true);
|
miniMapPane.setVisible(true);
|
||||||
miniMapButton.setVisible(true);
|
miniMapButton.setVisible(true);
|
||||||
Platform.runLater(new Runnable() {
|
Platform.runLater(() -> contentStackPane.requestFocus());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
contentStackPane.requestFocus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -288,7 +283,7 @@ public class RaceViewController extends Thread {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeIcon(ClientYacht yacht) {
|
private void removeIcon(ClientYacht yacht) {
|
||||||
if (yacht == player) {
|
if (yacht == player) {
|
||||||
blinkingTimer.cancel();
|
blinkingTimer.cancel();
|
||||||
iconToDisplay.setVisible(false);
|
iconToDisplay.setVisible(false);
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class ViewManager {
|
|||||||
decorator.applyCss();
|
decorator.applyCss();
|
||||||
decorator.getStylesheets()
|
decorator.getStylesheets()
|
||||||
.add(getClass().getResource("/css/Master.css").toExternalForm());
|
.add(getClass().getResource("/css/Master.css").toExternalForm());
|
||||||
gameClient = new GameClient(decorator);
|
gameClient = new GameClient();
|
||||||
setDecorator(decorator);
|
setDecorator(decorator);
|
||||||
|
|
||||||
stage.getIcons().add(new Image(getClass().getResourceAsStream("/PP.png")));
|
stage.getIcons().add(new Image(getClass().getResourceAsStream("/PP.png")));
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ public class ServerCreationController implements Initializable {
|
|||||||
*/
|
*/
|
||||||
private void createServer() {
|
private void createServer() {
|
||||||
ServerDescription serverDescription = ViewManager.getInstance().getGameClient()
|
ServerDescription serverDescription = ViewManager.getInstance().getGameClient()
|
||||||
.runAsHost("localhost", 4941, serverName.getText(), (int) maxPlayersSlider
|
.runAsHost(serverName.getText(), (int) maxPlayersSlider
|
||||||
.getValue(), mapMaker.getCurrentRacePath(), (int) legsSlider.getValue(), pickupsCheckBox.isSelected());
|
.getValue(), mapMaker.getCurrentRacePath(), (int) legsSlider.getValue(), pickupsCheckBox.isSelected());
|
||||||
|
|
||||||
if (serverDescription == null){
|
if (serverDescription == null){
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
</CompoundMark>
|
</CompoundMark>
|
||||||
<CompoundMark CompoundMarkID="2">
|
<CompoundMark CompoundMarkID="2">
|
||||||
<Mark Lat="57.670914" Lng="11.835263"/>
|
<Mark Lat="57.670914" Lng="11.835263"/>
|
||||||
<Mark Lat="57.6699024" Lng="11.8353195"/>
|
|
||||||
</CompoundMark>
|
</CompoundMark>
|
||||||
<CompoundMark CompoundMarkID="3">
|
<CompoundMark CompoundMarkID="3">
|
||||||
<Mark Lat="57.6674596" Lng="11.8417500"/>
|
<Mark Lat="57.6674596" Lng="11.8417500"/>
|
||||||
@@ -29,21 +28,27 @@
|
|||||||
<Mark Lat="57.667311" Lng="11.828857"/>
|
<Mark Lat="57.667311" Lng="11.828857"/>
|
||||||
<Mark Lat="57.667334" Lng="11.825853"/>
|
<Mark Lat="57.667334" Lng="11.825853"/>
|
||||||
</CompoundMark>
|
</CompoundMark>
|
||||||
|
<CompoundMark CompoundMarkID="6">
|
||||||
|
<Mark Lat="57.6675700" Lng="11.8359880"/>
|
||||||
|
<Mark Lat="57.667610" Lng="11.833473"/>
|
||||||
|
</CompoundMark>
|
||||||
</Marks>
|
</Marks>
|
||||||
|
|
||||||
<Course>
|
<Course>
|
||||||
<OpeningSegment>
|
<OpeningSegment>
|
||||||
<Corner CompoundMarkID="1" Rounding="PS"/>
|
<Corner CompoundMarkID="1" Rounding="PS"/>
|
||||||
<Corner CompoundMarkID="2" Rounding="P"/>
|
<Corner CompoundMarkID="2" Rounding="S"/>
|
||||||
</OpeningSegment>
|
</OpeningSegment>
|
||||||
|
|
||||||
<RepeatingSegment>
|
<RepeatingSegment>
|
||||||
<Corner CompoundMarkID="3" Rounding="SP"/>
|
<Corner CompoundMarkID="3" Rounding="SP"/>
|
||||||
<Corner CompoundMarkID="4" Rounding="PS"/>
|
<Corner CompoundMarkID="4" Rounding="PS"/>
|
||||||
|
<Corner CompoundMarkID="5" Rounding="PS"/>
|
||||||
|
<Corner CompoundMarkID="2" Rounding="S"/>
|
||||||
</RepeatingSegment>
|
</RepeatingSegment>
|
||||||
|
|
||||||
<ClosingSegment>
|
<ClosingSegment>
|
||||||
<Corner CompoundMarkID="5" Rounding="PS"/>
|
<Corner CompoundMarkID="6" Rounding="PS"/>
|
||||||
</ClosingSegment>
|
</ClosingSegment>
|
||||||
</Course>
|
</Course>
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import java.lang.*?>
|
|
||||||
<?import javafx.geometry.*?>
|
|
||||||
<?import javafx.scene.control.*?>
|
|
||||||
<?import javafx.scene.layout.*?>
|
|
||||||
<?import javafx.scene.text.*?>
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.TableColumn?>
|
|
||||||
<?import javafx.scene.control.TableView?>
|
|
||||||
<?import javafx.scene.layout.AnchorPane?>
|
|
||||||
<?import javafx.scene.layout.ColumnConstraints?>
|
|
||||||
<?import javafx.scene.layout.GridPane?>
|
|
||||||
<?import javafx.scene.layout.RowConstraints?>
|
|
||||||
<?import javafx.scene.text.Font?>
|
|
||||||
|
|
||||||
<GridPane fx:id="finishScreenGridPane" maxHeight="837.0" maxWidth="837.0" minHeight="837.0" minWidth="837.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="837.0" prefWidth="837.0" style="-fx-background-color: #2C2c36;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.visualiser.controllers.FinishScreenViewController">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints maxHeight="259.0" minHeight="259.0" prefHeight="259.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints maxHeight="64.0" minHeight="64.0" prefHeight="64.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints maxHeight="257.0" minHeight="257.0" prefHeight="257.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints maxHeight="257.0" minHeight="257.0" prefHeight="257.0" vgrow="SOMETIMES" />
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
|
||||||
<Label alignment="CENTER" text="Race Finished!" textFill="WHITE" GridPane.halignment="CENTER" GridPane.valignment="CENTER">
|
|
||||||
<font>
|
|
||||||
<Font size="40.0" />
|
|
||||||
</font>
|
|
||||||
</Label>
|
|
||||||
<Label alignment="CENTER" text="Race Result:" textFill="WHITE" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER">
|
|
||||||
<font>
|
|
||||||
<Font size="28.0" />
|
|
||||||
</font>
|
|
||||||
</Label>
|
|
||||||
<TableView fx:id="finishOrderTable" maxWidth="661.0" prefHeight="324.0" prefWidth="629.0" styleClass="ui-table" GridPane.halignment="CENTER" GridPane.rowIndex="2">
|
|
||||||
<columns>
|
|
||||||
<TableColumn fx:id="posCol" editable="false" maxWidth="74.0" minWidth="74.0" prefWidth="74.0" resizable="false" sortable="false" text="Position" />
|
|
||||||
<TableColumn fx:id="boatNameCol" editable="false" maxWidth="171.0" minWidth="171.0" prefWidth="171.0" resizable="false" sortable="false" text="Boat Name" />
|
|
||||||
<TableColumn fx:id="shortNameCol" editable="false" maxWidth="155.18472290039062" minWidth="107.0" prefWidth="155.18472290039062" resizable="false" sortable="false" text="Short Name" />
|
|
||||||
<TableColumn fx:id="countryCol" editable="false" maxWidth="258.9999694824219" minWidth="147.0" prefWidth="258.9999694824219" resizable="false" sortable="false" text="Country" />
|
|
||||||
</columns>
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets bottom="50.0" />
|
|
||||||
</GridPane.margin>
|
|
||||||
</TableView>
|
|
||||||
<Button mnemonicParsing="false" onAction="#switchToStartScreenView" onMouseEntered="#playButtonHoverSound" styleClass="blue-ui-btn" text="Return to Start Screen" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="TOP" />
|
|
||||||
</children>
|
|
||||||
</GridPane>
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import java.lang.String?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.scene.control.CheckBox?>
|
|
||||||
<?import javafx.scene.layout.AnchorPane?>
|
|
||||||
<?import javafx.scene.text.Font?>
|
|
||||||
<?import javafx.scene.text.Text?>
|
|
||||||
<AnchorPane fx:id="annotationSelectWindow" maxHeight="270.0" maxWidth="469.0" minHeight="270.0" minWidth="469.0" prefHeight="270.0" prefWidth="469.0" styleClass="background-blue" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
|
|
||||||
<children>
|
|
||||||
<Text fill="WHITE" layoutX="26.0" layoutY="52.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Select important annotations">
|
|
||||||
<font>
|
|
||||||
<Font size="24.0" />
|
|
||||||
</font>
|
|
||||||
</Text>
|
|
||||||
<CheckBox fx:id="boatWakeSelect" layoutX="26.0" layoutY="80.0" mnemonicParsing="false" style="-fx-border-width: 0; -fx-background-insets: 0;" text="Boat Wakes" textFill="#e7e7e7" />
|
|
||||||
<CheckBox fx:id="boatSpeedSelect" layoutX="26.0" layoutY="111.0" mnemonicParsing="false" text="Boat Speed" textFill="#e7e7e7" />
|
|
||||||
<CheckBox fx:id="boatTrackSelect" layoutX="26.0" layoutY="142.0" mnemonicParsing="false" text="Boat Tracks" textFill="#e7e7e7" />
|
|
||||||
<CheckBox fx:id="boatNameSelect" layoutX="26.0" layoutY="173.0" mnemonicParsing="false" text="Boat Name" textFill="#e7e7e7" />
|
|
||||||
<CheckBox fx:id="boatEstTimeToNextMarkSelect" layoutX="26.0" layoutY="204.0" mnemonicParsing="false" text="Boat Estimated Time To Next Mark" textFill="#e7e7e7" />
|
|
||||||
<Button fx:id="closeButton" layoutX="424.0" layoutY="-1.0" mnemonicParsing="false" prefHeight="11.0" prefWidth="49.0" style=": 0;" text="X" textFill="#ffffff4e">
|
|
||||||
<font>
|
|
||||||
<Font size="24.0" />
|
|
||||||
</font>
|
|
||||||
<styleClass>
|
|
||||||
<String fx:value="background-blue" />
|
|
||||||
<String fx:value="clearExitButton" />
|
|
||||||
</styleClass>
|
|
||||||
</Button>
|
|
||||||
<CheckBox fx:id="boatElapsedTimeSelect" layoutX="26.0" layoutY="235.0" mnemonicParsing="false" text="Boat Elapsed Time Since Last Mark" textFill="#e7e7e7" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
Reference in New Issue
Block a user