Began work on ConnectionController for selecting active hosts on startup via GUI.
#story[782]
This commit is contained in:
@@ -22,9 +22,9 @@ public class App extends Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void start(Stage stage) throws Exception {
|
public void start(Stage stage) throws Exception {
|
||||||
FXMLLoader loader = new FXMLLoader(getClass().getResource("/scenes/main.fxml"));
|
FXMLLoader loader = new FXMLLoader(getClass().getResource("/scenes/connect.fxml"));
|
||||||
Parent root = loader.load();
|
Parent root = loader.load();
|
||||||
Scene scene = new Scene(root, 1200, 800);
|
Scene scene = new Scene(root, 600, 400);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.show();
|
stage.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package seng302.Controllers;
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.TableColumn;
|
||||||
|
|
||||||
|
import javax.swing.text.TableView;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by cbt24 on 3/05/17.
|
||||||
|
*/
|
||||||
|
public class ConnectionController extends Controller {
|
||||||
|
@FXML
|
||||||
|
TableView connectionTable;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,6 +16,8 @@ public class MainController extends Controller {
|
|||||||
StartController startController;
|
StartController startController;
|
||||||
@FXML
|
@FXML
|
||||||
RaceController raceController;
|
RaceController raceController;
|
||||||
|
@FXML
|
||||||
|
ConnectionController connectionController;
|
||||||
|
|
||||||
public void beginRace(VisualiserInput visualiserInput) {
|
public void beginRace(VisualiserInput visualiserInput) {
|
||||||
raceController.startRace(visualiserInput);
|
raceController.startRace(visualiserInput);
|
||||||
@@ -32,6 +34,7 @@ public class MainController extends Controller {
|
|||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
startController.setParent(this);
|
startController.setParent(this);
|
||||||
raceController.setParent(this);
|
raceController.setParent(this);
|
||||||
|
connectionController.setParent(this);
|
||||||
AnchorPane.setTopAnchor(startController.startWrapper(), 0.0);
|
AnchorPane.setTopAnchor(startController.startWrapper(), 0.0);
|
||||||
AnchorPane.setBottomAnchor(startController.startWrapper(), 0.0);
|
AnchorPane.setBottomAnchor(startController.startWrapper(), 0.0);
|
||||||
AnchorPane.setLeftAnchor(startController.startWrapper(), 0.0);
|
AnchorPane.setLeftAnchor(startController.startWrapper(), 0.0);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package seng302.Mock;
|
package seng302.Mock;
|
||||||
|
|
||||||
|
import javafx.animation.AnimationTimer;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import org.geotools.referencing.GeodeticCalculator;
|
import org.geotools.referencing.GeodeticCalculator;
|
||||||
import seng302.*;
|
import seng302.*;
|
||||||
@@ -12,6 +13,7 @@ import seng302.Networking.Utils.Enums.BoatStatus;
|
|||||||
import seng302.Networking.Utils.BoatLocationMessage;
|
import seng302.Networking.Utils.BoatLocationMessage;
|
||||||
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,4 +101,39 @@ public class StreamedRace extends Race {
|
|||||||
boat.setCurrentPosition(coordinate);
|
boat.setCurrentPosition(coordinate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void countdownTimer() {
|
||||||
|
new AnimationTimer() {
|
||||||
|
long minutes;
|
||||||
|
long currentTimeInSeconds;
|
||||||
|
long remainingSeconds;
|
||||||
|
long hours;
|
||||||
|
long timeLeft;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle(long arg0) {
|
||||||
|
long currentTime = Instant.now().getEpochSecond();
|
||||||
|
long startTime = visualiserInput.getRaceStatus().getExpectedStartTime();
|
||||||
|
timeLeft = startTime - currentTime;
|
||||||
|
System.out.println(timeLeft);
|
||||||
|
|
||||||
|
if (timeLeft <= 0 && controller != null) {
|
||||||
|
updateTime("Race is starting...");
|
||||||
|
stop();
|
||||||
|
simulateRace();
|
||||||
|
} else {
|
||||||
|
currentTimeInSeconds = (timeLeft*scaleFactor) / 1000;
|
||||||
|
minutes = currentTimeInSeconds / 60;
|
||||||
|
remainingSeconds = currentTimeInSeconds % 60;
|
||||||
|
hours = minutes / 60;
|
||||||
|
minutes = minutes % 60;
|
||||||
|
if (controller != null) {
|
||||||
|
updateTime(String.format("Race clock: -%02d:%02d:%02d", hours, minutes, remainingSeconds));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentTime = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
}.start();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,10 @@ public abstract class Race implements Runnable {
|
|||||||
protected RaceController controller;
|
protected RaceController controller;
|
||||||
protected int boatsFinished = 0;
|
protected int boatsFinished = 0;
|
||||||
protected long totalTimeElapsed;
|
protected long totalTimeElapsed;
|
||||||
private int lastFPS = 20;
|
|
||||||
|
|
||||||
protected int scaleFactor;
|
protected int scaleFactor;
|
||||||
|
private int lastFPS = 20;
|
||||||
protected int PRERACE_TIME = 0; //time in milliseconds to pause during pre-race
|
private int PRERACE_TIME = 0; //time in milliseconds to pause during pre-race
|
||||||
private boolean timerEnabled = true; //boolean to determine if timer is ran
|
private boolean timerEnabled = true; //boolean to determine if timer is ran
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -196,7 +195,7 @@ public abstract class Race implements Runnable {
|
|||||||
* Starts the Race Simulation, playing the race start to finish with the timescale.
|
* Starts the Race Simulation, playing the race start to finish with the timescale.
|
||||||
* This prints the boats participating, the order that the events occur in time order, and the respective information of the events.
|
* This prints the boats participating, the order that the events occur in time order, and the respective information of the events.
|
||||||
*/
|
*/
|
||||||
private void simulateRace() {
|
protected final void simulateRace() {
|
||||||
|
|
||||||
System.setProperty("javafx.animation.fullspeed", "true");
|
System.setProperty("javafx.animation.fullspeed", "true");
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package seng302;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by cbt24 on 3/05/17.
|
||||||
|
*/
|
||||||
|
public class RaceConnection {
|
||||||
|
private String hostname;
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
public RaceConnection(String hostname, int port) {
|
||||||
|
this.hostname = hostname;
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.text.*?>
|
||||||
|
<?import javafx.scene.control.*?>
|
||||||
|
<?import java.lang.*?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
|
||||||
|
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="seng302.Controllers.ConnectionController">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="192.0" minWidth="10.0" prefWidth="50.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="444.0" minWidth="10.0" prefWidth="444.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="144.0" minWidth="10.0" prefWidth="56.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="129.0" minHeight="10.0" prefHeight="61.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="283.0" minHeight="10.0" prefHeight="239.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="114.0" minHeight="10.0" prefHeight="89.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<TableView prefHeight="500.0" prefWidth="900.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||||
|
<columns>
|
||||||
|
<TableColumn prefWidth="217.0" text="Address" />
|
||||||
|
<TableColumn prefWidth="226.0" text="Status" />
|
||||||
|
</columns>
|
||||||
|
</TableView>
|
||||||
|
<Label text="RaceVision" GridPane.columnIndex="1" GridPane.halignment="CENTER">
|
||||||
|
<font>
|
||||||
|
<Font size="24.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Button disable="true" mnemonicParsing="false" text="Connect" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.rowIndex="2" />
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
Reference in New Issue
Block a user