diff --git a/racevisionGame/src/main/java/mock/app/Event.java b/racevisionGame/src/main/java/mock/app/Event.java index 6f778852..3e8c0727 100644 --- a/racevisionGame/src/main/java/mock/app/Event.java +++ b/racevisionGame/src/main/java/mock/app/Event.java @@ -2,14 +2,14 @@ package mock.app; import mock.dataInput.PolarParser; import mock.exceptions.EventConstructionException; -import mock.model.*; +import mock.model.MockRace; +import mock.model.Polars; +import mock.model.RaceLogic; +import mock.model.SourceIdAllocator; import mock.model.commandFactory.CompositeCommand; -import mock.model.wind.RandomWindGenerator; import mock.model.wind.ShiftingWindGenerator; import mock.model.wind.WindGenerator; -import mock.xml.RaceXMLCreator; import network.Messages.LatestMessages; -import org.xml.sax.SAXException; import shared.dataInput.*; import shared.enums.XMLFileType; import shared.exceptions.InvalidBoatDataException; @@ -19,17 +19,10 @@ import shared.exceptions.XMLReaderException; import shared.model.Bearing; import shared.model.Constants; -import javax.xml.bind.JAXBException; -import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; -import java.util.logging.Logger; /** diff --git a/racevisionGame/src/main/java/shared/model/RaceClock.java b/racevisionGame/src/main/java/shared/model/RaceClock.java index b3a631c6..3ce61245 100644 --- a/racevisionGame/src/main/java/shared/model/RaceClock.java +++ b/racevisionGame/src/main/java/shared/model/RaceClock.java @@ -3,7 +3,7 @@ package shared.model; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import org.jetbrains.annotations.Nullable; -import visualiser.Controllers2.StartController; +import visualiser.Controllers.RaceStartController; import visualiser.model.ResizableRaceCanvas; import java.time.Duration; @@ -16,8 +16,8 @@ import java.util.Date; * This class is used to implement a clock which keeps track of and * displays times relevant to a race. This is displayed on the * {@link ResizableRaceCanvas} via the - * {@link visualiser.Controllers.RaceController} and the - * {@link StartController}. + * {@link visualiser.Controllers.RaceViewController} and the + * {@link RaceStartController}. */ public class RaceClock { diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/ArrowController.java b/racevisionGame/src/main/java/visualiser/Controllers/ArrowController.java similarity index 99% rename from racevisionGame/src/main/java/visualiser/Controllers2/ArrowController.java rename to racevisionGame/src/main/java/visualiser/Controllers/ArrowController.java index 069f04a5..739b2f6e 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/ArrowController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/ArrowController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.application.Platform; import javafx.beans.property.Property; diff --git a/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java b/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java index 28692488..dc4535e0 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/ConnectionController.java @@ -5,43 +5,24 @@ import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.layout.AnchorPane; -import mock.app.Event; -import org.xml.sax.SAXException; -import shared.exceptions.InvalidBoatDataException; -import shared.exceptions.InvalidRaceDataException; -import shared.exceptions.InvalidRegattaDataException; -import shared.exceptions.XMLReaderException; import visualiser.model.RaceConnection; - -import javax.xml.bind.JAXBException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.soap.Text; import java.io.IOException; import java.net.Socket; import java.net.URL; -import java.net.UnknownHostException; import java.util.ResourceBundle; //TODO it appears this view/controller was replaced by Lobby.fxml. Remove? /** * Controls the connection that the VIsualiser can connect to. */ -public class ConnectionController extends Controller { - @FXML - private AnchorPane connectionWrapper; - @FXML - private TableView connectionTable; - @FXML - private TableColumn hostnameColumn; - @FXML - private TableColumn statusColumn; - @FXML - private Button connectButton; - - @FXML - private TextField urlField; - @FXML - private TextField portField; +public class ConnectionController extends Controller2 { + @FXML AnchorPane connectionWrapper; + @FXML TableView connectionTable; + @FXML TableColumn hostnameColumn; + @FXML TableColumn statusColumn; + @FXML Button connectButton; + @FXML TextField urlField; + @FXML TextField portField; /*Title Screen fxml items*/ @@ -87,7 +68,6 @@ public class ConnectionController extends Controller { - @Override public void initialize(URL location, ResourceBundle resources) { // TODO - replace with config file connections = FXCollections.observableArrayList(); @@ -143,5 +123,4 @@ public class ConnectionController extends Controller { } } - } diff --git a/racevisionGame/src/main/java/visualiser/Controllers/Controller.java b/racevisionGame/src/main/java/visualiser/Controllers/Controller.java deleted file mode 100644 index 220b7816..00000000 --- a/racevisionGame/src/main/java/visualiser/Controllers/Controller.java +++ /dev/null @@ -1,32 +0,0 @@ -package visualiser.Controllers; - -import javafx.fxml.Initializable; - -import java.net.URL; -import java.util.ResourceBundle; - -/** - * Controller parent for app controllers. - * Created by fwy13 on 15/03/2017. - */ -public abstract class Controller implements Initializable { - protected MainController parent; - - /** - * Sets the parent of the application - * - * @param parent controller - */ - public void setParent(MainController parent) { - this.parent = parent; - } - - /** - * Initialisation class that is run on start up. - * - * @param location resources location - * @param resources resources bundle - */ - @Override - public abstract void initialize(URL location, ResourceBundle resources); -} diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/Controller2.java b/racevisionGame/src/main/java/visualiser/Controllers/Controller2.java similarity index 84% rename from racevisionGame/src/main/java/visualiser/Controllers2/Controller2.java rename to racevisionGame/src/main/java/visualiser/Controllers/Controller2.java index c941b0f7..74d8390a 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/Controller2.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/Controller2.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; @@ -7,13 +7,25 @@ import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; import visualiser.app.App; + import java.io.IOException; + /** * Abstract controller class to give each subclass the functionality to load * a new scene into the existing stage, or create a new popup window. */ -public class Controller2 { +public abstract class Controller2 { + Stage stage = App.getStage(); + + protected void loadTitleScreen() throws IOException { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/visualiser/scenes/title.fxml")); + Parent root = loader.load(); + stage.setResizable(false); + Scene scene = new Scene(root); + stage.setScene(scene); + stage.show(); + } /** * Used to load a new scene in the currently open stage. @@ -34,12 +46,13 @@ public class Controller2 { Double stageWidth = stage.getWidth(); // set new scene into existing window - Scene scene = new Scene(root); + Scene scene = new Scene(root, stageWidth, stageHeight); stage.setScene(scene); stage.setResizable(true); stage.show(); stage.setHeight(stageHeight); stage.setWidth(stageWidth); + stage.sizeToScene(); // return controller for the loaded fxml scene return loader.getController(); diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/KeyBindingsController.java b/racevisionGame/src/main/java/visualiser/Controllers/KeyBindingsController.java similarity index 99% rename from racevisionGame/src/main/java/visualiser/Controllers2/KeyBindingsController.java rename to racevisionGame/src/main/java/visualiser/Controllers/KeyBindingsController.java index a1c8ae51..7da5a818 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/KeyBindingsController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/KeyBindingsController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.application.Platform; import javafx.event.EventHandler; diff --git a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java index 2b69cff5..2230bbdb 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyController.java @@ -7,9 +7,6 @@ import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; -import javafx.scene.layout.AnchorPane; -import visualiser.Controllers2.Controller2; -import visualiser.Controllers2.StartController; import visualiser.model.RaceConnection; import java.io.IOException; @@ -19,34 +16,21 @@ import java.net.Socket; * Controller for the Lobby for entering games */ public class LobbyController extends Controller2 { - - @FXML - private AnchorPane lobbyWrapper; - @FXML - private TableView lobbyTable; - @FXML - private TableColumn gameNameColumn; - @FXML - private TableColumn hostNameColumn; - @FXML - private TableColumn statusColumn; - @FXML - private Button joinGameBtn; - @FXML - private TextField addressFld; - @FXML - private TextField portFld; - + private @FXML TableView lobbyTable; + private @FXML TableColumn gameNameColumn; + private @FXML TableColumn hostNameColumn; + private @FXML TableColumn statusColumn; + private @FXML Button joinGameBtn; + private @FXML TextField addressFld; + private @FXML TextField portFld; private ObservableList connections; - -// @Override public void initialize() { + // set up the connection table connections = FXCollections.observableArrayList(); //connections.add(new RaceConnection("localhost", 4942, "Local Game")); lobbyTable.setItems(connections); - gameNameColumn.setCellValueFactory(cellData -> cellData.getValue().gamenameProperty()); hostNameColumn.setCellValueFactory(cellData -> cellData.getValue().hostnameProperty()); statusColumn.setCellValueFactory(cellData -> cellData.getValue().statusProperty()); @@ -54,8 +38,7 @@ public class LobbyController extends Controller2 { lobbyTable.getSelectionModel().selectedItemProperty().addListener((obs, prev, curr) -> { if (curr != null && curr.statusProperty().getValue().equals("Ready")) { joinGameBtn.setDisable(false); - } - else { + } else { joinGameBtn.setDisable(true); } }); @@ -81,23 +64,15 @@ public class LobbyController extends Controller2 { /** * Connect to a connection. */ - public void connectSocket() { - try{ - RaceConnection connection = lobbyTable.getSelectionModel().getSelectedItem(); - Socket socket = new Socket(connection.getHostname(), connection.getPort()); - lobbyWrapper.setVisible(false); -// parent.enterLobby(socket, false); - StartController sc = (StartController)loadScene( - "/visualiser/scenes/start.fxml"); - sc.enterLobby(socket, false); - } catch (IOException e) { /* Never reached */ - e.printStackTrace(); - } + public void connectSocket() throws IOException { + RaceConnection connection = lobbyTable.getSelectionModel().getSelectedItem(); + Socket socket = new Socket(connection.getHostname(), connection.getPort()); + RaceStartController rsc = (RaceStartController)loadScene("raceStart.fxml"); + rsc.enterLobby(socket, false); } public void menuBtnPressed() throws IOException { -// parent.enterTitle(); - loadScene("titleScreen.fxml"); + loadScene("title.fxml"); } /** @@ -106,24 +81,14 @@ public class LobbyController extends Controller2 { public void addConnectionPressed(){ String hostName = addressFld.getText(); String portString = portFld.getText(); - try{ + try { int port = Integer.parseInt(portString); connections.add(new RaceConnection(hostName, port, "Boat Game")); addressFld.clear(); portFld.clear(); - }catch(NumberFormatException e){ + } catch (NumberFormatException e) { System.err.println("Port number entered is not a number"); } } - public AnchorPane startWrapper(){ - return lobbyWrapper; - } - - /** - * Enter the lobby page. - */ - public void enterLobby(){ - lobbyWrapper.setVisible(true); - } -} +} \ No newline at end of file diff --git a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java b/racevisionGame/src/main/java/visualiser/Controllers/LobbyHostingController.java similarity index 67% rename from racevisionGame/src/main/java/visualiser/Controllers/HostController.java rename to racevisionGame/src/main/java/visualiser/Controllers/LobbyHostingController.java index 6d0ec3a1..dd2fcb89 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/HostController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/LobbyHostingController.java @@ -2,14 +2,9 @@ package visualiser.Controllers; import com.interactivemesh.jfx.importer.stl.StlMeshImporter; import javafx.animation.AnimationTimer; -import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import javafx.event.EventHandler; import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; import javafx.scene.control.SplitPane; @@ -17,12 +12,8 @@ import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.scene.shape.MeshView; -import javafx.stage.Stage; -import javafx.stage.WindowEvent; import mock.app.Event; import mock.exceptions.EventConstructionException; -import visualiser.Controllers2.Controller2; -import visualiser.Controllers2.StartController; import visualiser.app.App; import visualiser.layout.Subject3D; import visualiser.layout.View3D; @@ -37,13 +28,12 @@ import java.util.logging.Logger; /** * Controller for Hosting a game. */ -public class HostController extends Controller2 { +public class LobbyHostingController extends Controller2 { private @FXML ImageView imageView; private @FXML AnchorPane imagePane; private @FXML SplitPane splitPane; private @FXML AnchorPane specPane; private @FXML GridPane playerContainer; - private Event game; private View3D view3D; public void initialize() { @@ -54,7 +44,7 @@ public class HostController extends Controller2 { view3D.setItems(subjects); playerContainer.add(view3D, 0,0); - URL asset = HostController.class.getClassLoader().getResource("assets/V1.2 Complete Boat.stl"); + URL asset = LobbyHostingController.class.getClassLoader().getResource("assets/V1.2 Complete Boat.stl"); StlMeshImporter importer = new StlMeshImporter(); importer.read(asset); @@ -81,30 +71,25 @@ public class HostController extends Controller2 { */ public void hostGamePressed() { try { - this.game = new Event(false); + App.game = new Event(false); connectSocket("localhost", 4942); } catch (EventConstructionException e) { Logger.getGlobal().log(Level.SEVERE, "Could not create Event.", e); throw new RuntimeException(e); + } catch (IOException e) { + e.printStackTrace(); } } - public void endEvent() throws IOException { - game.endEvent(); - } - /** * Connect to a socket * @param address address of the server * @param port port that the server is run off */ - public void connectSocket(String address, int port) { - try{ - Socket socket = new Socket(address, port); - StartController sc = (StartController)loadScene - ("start.fxml"); - sc.enterLobby(socket, true); - } catch (IOException e) { /* Never reached */ } + public void connectSocket(String address, int port) throws IOException { + Socket socket = new Socket(address, port); + RaceStartController rsc = (RaceStartController)loadScene("raceStart.fxml"); + rsc.enterLobby(socket, true); } /** @@ -115,34 +100,21 @@ public class HostController extends Controller2 { splitPane.lookupAll(".split-pane-divider").stream().forEach(div -> div.setMouseTransparent(true)); imageView.fitWidthProperty().bind(imagePane.widthProperty()); imageView.fitHeightProperty().bind(imagePane.heightProperty()); -// hostWrapper.setVisible(true); tick } /** * Menu button pressed. Prompt alert then return to menu */ - public void menuBtnPressed() throws IOException { + public void menuBtnPressed() throws Exception { Alert alert = new Alert(Alert.AlertType.CONFIRMATION); alert.setTitle("Quitting race"); alert.setContentText("Do you wish to quit the race?"); alert.setHeaderText("You are about to quit the race"); Optional result = alert.showAndWait(); if(result.get() == ButtonType.OK){ -// hostWrapper.setVisible(false); - Stage stage = App.getStage(); - FXMLLoader loader = new FXMLLoader(getClass().getResource("/visualiser/scenes/main.fxml")); - Parent root = loader.load(); - stage.setResizable(false); - Scene scene = new Scene(root); - stage.setScene(scene); - stage.show(); - stage.setOnCloseRequest(new EventHandler() { - @Override public void handle(WindowEvent event) { - Platform.exit(); - System.exit(0); - } - }); -// parent.enterTitle(); tick +// getStage().close(); +// App.app.loadTitleScreen(); + loadTitleScreen(); } } diff --git a/racevisionGame/src/main/java/visualiser/Controllers/MainController.java b/racevisionGame/src/main/java/visualiser/Controllers/MainController.java deleted file mode 100644 index 7007b8b9..00000000 --- a/racevisionGame/src/main/java/visualiser/Controllers/MainController.java +++ /dev/null @@ -1,135 +0,0 @@ -package visualiser.Controllers; - -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.layout.AnchorPane; -import visualiser.Controllers2.FinishController; -import visualiser.Controllers2.StartController; -import visualiser.Controllers2.TitleController; -import visualiser.gameController.ControllerClient; -import visualiser.model.VisualiserBoat; -import visualiser.model.VisualiserRaceEvent; - -import java.io.IOException; -import java.net.Socket; -import java.net.URL; -import java.util.ResourceBundle; - - -/** - * Controller that everything is overlayed onto. This makes it so that changing scenes does not resize your stage. - */ -public class MainController extends Controller { - - @FXML private StartController startController; - @FXML private RaceController raceController; - @FXML private ConnectionController connectionController; - @FXML private FinishController finishController; - @FXML private TitleController titleController; - @FXML private HostController hostController; - @FXML private LobbyController lobbyController; - - - /** - * Ctor. - */ - public MainController() { - } - - - - /** - * Transitions from the StartController screen (displays pre-race information) to the RaceController (displays the actual race). - * @param visualiserRace The object modelling the race. - * @param controllerClient Socket Client that manipulates the controller. - * @param isHost if the client is the host of a race or not. - */ - public void beginRace(VisualiserRaceEvent visualiserRace, ControllerClient controllerClient, Boolean isHost) { - raceController.startRace(visualiserRace, controllerClient, isHost); - } - - public void endEvent() throws IOException { hostController.endEvent(); } - - /** - * Transitions from the server selection screen to the pre-race lobby for a given server. - * @param socket The server to read data from. - * @param isHost is connection a host - */ - public void enterLobby(Socket socket, Boolean isHost) { - startController.enterLobby(socket, isHost); - } - - /** - * Transitions from the {@link RaceController} screen to the {@link FinishController} screen. - * @param boats The boats to display on the finish screen. - */ - public void enterFinish(ObservableList boats) { - finishController.loadFinish(boats); - } - -// /** -// * Transitions into the title screen -// */ -// public void enterTitle() { -// titleController.enterTitle(); -// } - - /** - * Transitions into lobby screen - */ - public void enterLobby(){ lobbyController.enterLobby(); } - - /** - * Transitions into host game screen - */ - public void hostGame(){ hostController.hostGame(); } - - /** - * Sets up the css for the start of the program - */ - public void startCss(){titleController.setDayMode();} - - /** - * Main Controller for the applications will house the menu and the displayed pane. - * - * @param location of resources - * @param resources bundle - */ - @Override - public void initialize(URL location, ResourceBundle resources) { - -// startController.setParent(this); -// raceController.setParent(this); -// connectionController.setParent(this); -// finishController.setParent(this); -// titleController.setParent(this); -// hostController.setParent(this); -// lobbyController.setParent(this); - - -// AnchorPane.setTopAnchor(startController.startWrapper(), 0.0); -// AnchorPane.setBottomAnchor(startController.startWrapper(), 0.0); -// AnchorPane.setLeftAnchor(startController.startWrapper(), 0.0); -// AnchorPane.setRightAnchor(startController.startWrapper(), 0.0); - - AnchorPane.setTopAnchor(lobbyController.startWrapper(), 0.0); - AnchorPane.setBottomAnchor(lobbyController.startWrapper(), 0.0); - AnchorPane.setLeftAnchor(lobbyController.startWrapper(), 0.0); - AnchorPane.setRightAnchor(lobbyController.startWrapper(), 0.0); - -// AnchorPane.setTopAnchor(hostController.startWrapper(), 0.0); -// AnchorPane.setBottomAnchor(hostController.startWrapper(), 0.0); -// AnchorPane.setLeftAnchor(hostController.startWrapper(), 0.0); -// AnchorPane.setRightAnchor(hostController.startWrapper(), 0.0); - -// AnchorPane.setTopAnchor(finishController.finishWrapper, 0.0); -// AnchorPane.setBottomAnchor(finishController.finishWrapper, 0.0); -// AnchorPane.setLeftAnchor(finishController.finishWrapper, 0.0); -// AnchorPane.setRightAnchor(finishController.finishWrapper, 0.0); - -// AnchorPane.setTopAnchor(titleController.titleWrapper, 0.0); -// AnchorPane.setBottomAnchor(titleController.titleWrapper, 0.0); -// AnchorPane.setLeftAnchor(titleController.titleWrapper, 0.0); -// AnchorPane.setRightAnchor(titleController.titleWrapper, 0.0); - } -} diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/NotificationController.java b/racevisionGame/src/main/java/visualiser/Controllers/NotificationController.java similarity index 96% rename from racevisionGame/src/main/java/visualiser/Controllers2/NotificationController.java rename to racevisionGame/src/main/java/visualiser/Controllers/NotificationController.java index b8fe1b9c..d122ec80 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/NotificationController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/NotificationController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.fxml.FXML; import javafx.scene.control.Label; diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/FinishController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceFinishController.java similarity index 93% rename from racevisionGame/src/main/java/visualiser/Controllers2/FinishController.java rename to racevisionGame/src/main/java/visualiser/Controllers/RaceFinishController.java index f5ae6044..659af532 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/FinishController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceFinishController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.collections.ObservableList; import javafx.fxml.FXML; @@ -10,7 +10,7 @@ import visualiser.model.VisualiserBoat; /** * Finish Screen for when the race finishes. */ -public class FinishController extends Controller2 { +public class RaceFinishController extends Controller2 { private @FXML TableView boatInfoTable; private @FXML TableColumn boatRankColumn; private @FXML TableColumn boatNameColumn; diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/StartController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceStartController.java similarity index 93% rename from racevisionGame/src/main/java/visualiser/Controllers2/StartController.java rename to racevisionGame/src/main/java/visualiser/Controllers/RaceStartController.java index 4ff74987..fbf23a58 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/StartController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceStartController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.animation.AnimationTimer; import javafx.application.Platform; @@ -9,7 +9,6 @@ import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import network.Messages.Enums.RaceStatusEnum; import network.Messages.Enums.RequestToJoinEnum; -import visualiser.Controllers.RaceController; import visualiser.gameController.ControllerClient; import visualiser.model.VisualiserBoat; import visualiser.model.VisualiserRaceEvent; @@ -23,7 +22,7 @@ import java.util.logging.Logger; /** * Controller to for waiting for the race to start. */ -public class StartController extends Controller2 { +public class RaceStartController extends Controller2 { private @FXML Label raceTitleLabel; private @FXML Label raceStartLabel; private @FXML Label timeZoneTime; @@ -127,8 +126,10 @@ public class StartController extends Controller2 { stop(); // stop this timer // load up the race scene try { - RaceController rc = (RaceController)loadScene("race.fxml"); - rc.startRace(visualiserRaceEvent, controllerClient, isHost); + RaceViewController rvc = (RaceViewController) + loadScene("raceView.fxml"); + rvc.startRace(visualiserRaceEvent, controllerClient, + isHost); } catch (IOException e) { e.printStackTrace(); } diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java similarity index 93% rename from racevisionGame/src/main/java/visualiser/Controllers/RaceController.java rename to racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index b3b29374..b6836665 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -17,9 +17,6 @@ import javafx.scene.layout.StackPane; import javafx.util.Callback; import network.Messages.Enums.RaceStatusEnum; import shared.model.Leg; -import visualiser.Controllers2.ArrowController; -import visualiser.Controllers2.Controller2; -import visualiser.Controllers2.FinishController; import visualiser.app.App; import visualiser.gameController.ControllerClient; import visualiser.gameController.Keys.ControlKey; @@ -35,13 +32,12 @@ import java.util.logging.Logger; /** * Controller used to display a running race. */ -public class RaceController extends Controller2 { +public class RaceViewController extends Controller2 { private VisualiserRaceEvent visualiserRace; private VisualiserRaceState raceState; private ControllerClient controllerClient; private ResizableRaceCanvas raceCanvas; - private KeyFactory keyFactory; - + private KeyFactory keyFactory = new KeyFactory(); private boolean infoTableShow = true; // shown or hidden private boolean isHost; @@ -87,9 +83,10 @@ public class RaceController extends Controller2 { race.addEventFilter(KeyEvent.KEY_PRESSED, event -> { String codeString = event.getCode().toString(); + // tab key if (codeString.equals("TAB")){toggleTable();} - // valid key pressed + // any key pressed ControlKey controlKey = keyFactory.getKey(codeString); if(controlKey != null) { try { @@ -98,13 +95,12 @@ public class RaceController extends Controller2 { event.consume(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - Logger.getGlobal().log(Level.WARNING, "RaceController was interrupted on thread: " + Thread.currentThread() + "while sending: " + controlKey, e); + Logger.getGlobal().log(Level.WARNING, "RaceViewController was interrupted on thread: " + Thread.currentThread() + "while sending: " + controlKey, e); } } // escape key if(event.getCode() == KeyCode.ESCAPE) { - try { if (isHost) { Alert alert = new Alert(Alert.AlertType.CONFIRMATION); @@ -112,10 +108,8 @@ public class RaceController extends Controller2 { alert.setContentText("Do you wish to quit the race? You are the host"); Optional result = alert.showAndWait(); if (result.get() == ButtonType.OK) { - HostController hc = (HostController)loadScene( - "hostgame.fxml"); - hc.endEvent(); - App.app.loadTitleScreen(); + App.game.endEvent(); + loadTitleScreen(); } } else { Alert alert = new Alert(Alert.AlertType.CONFIRMATION); @@ -123,7 +117,7 @@ public class RaceController extends Controller2 { alert.setContentText("Do you wish to quit the race?"); Optional result = alert.showAndWait(); if (result.get() == ButtonType.OK) { - App.app.loadTitleScreen(); + loadTitleScreen(); } } } catch (IOException e) { @@ -170,10 +164,8 @@ public class RaceController extends Controller2 { showFPS.selectedProperty().addListener((ov, old_val, new_val) -> { if (showFPS.isSelected()) { FPS.setVisible(true); - } else { FPS.setVisible(false); - } }); @@ -260,8 +252,6 @@ public class RaceController extends Controller2 { private void initialiseRaceCanvas() { //Create canvas. raceCanvas = new ResizableRaceCanvas(raceState); - - //Set properties. raceCanvas.setMouseTransparent(true); raceCanvas.widthProperty().bind(canvasBase.widthProperty()); raceCanvas.heightProperty().bind(canvasBase.heightProperty()); @@ -288,8 +278,8 @@ public class RaceController extends Controller2 { * Transition from the race view to the finish view. */ public void finishRace() throws IOException { - FinishController fc = - (FinishController)loadScene("/visualiser/scenes/finish.fxml"); + RaceFinishController fc = + (RaceFinishController)loadScene("raceFinish.fxml"); fc.loadFinish(raceState.getBoats()); } @@ -317,7 +307,7 @@ public class RaceController extends Controller2 { //Return to main screen if we lose connection. if (!visualiserRace.getServerConnection().isAlive()) { try { - App.app.loadTitleScreen(); + loadTitleScreen(); } catch (Exception e) { e.printStackTrace(); } diff --git a/racevisionGame/src/main/java/visualiser/Controllers2/TitleController.java b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java similarity index 96% rename from racevisionGame/src/main/java/visualiser/Controllers2/TitleController.java rename to racevisionGame/src/main/java/visualiser/Controllers/TitleController.java index 62ef4324..42925021 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers2/TitleController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/TitleController.java @@ -1,4 +1,4 @@ -package visualiser.Controllers2; +package visualiser.Controllers; import javafx.fxml.FXML; import javafx.scene.control.RadioButton; @@ -23,7 +23,7 @@ public class TitleController extends Controller2 { * @throws IOException if main has problems */ public void hostAGame() throws IOException { - loadScene("hostLobby.fxml"); + loadScene("lobbyHosting.fxml"); } /** diff --git a/racevisionGame/src/main/java/visualiser/app/App.java b/racevisionGame/src/main/java/visualiser/app/App.java index 08aba761..9cd9794b 100644 --- a/racevisionGame/src/main/java/visualiser/app/App.java +++ b/racevisionGame/src/main/java/visualiser/app/App.java @@ -26,6 +26,7 @@ import javafx.stage.Stage; import javafx.stage.StageStyle; import javafx.stage.WindowEvent; import javafx.util.Duration; +import mock.app.Event; import visualiser.gameController.Keys.KeyFactory; public class App extends Application { @@ -36,8 +37,9 @@ public class App extends Application { private Label progressText; private static final int SPLASH_WIDTH = 676; private static final int SPLASH_HEIGHT = 227; - public static KeyFactory keyFactory = new KeyFactory(); - public static App app; + public static KeyFactory keyFactory; + public static App app = new App(); + public static Event game; /** * Entry point for running the programme @@ -50,6 +52,7 @@ public class App extends Application { @Override public void init() { // load the user's personalised key bindings + keyFactory = new KeyFactory(); keyFactory.load(); ImageView splash = new ImageView(new Image( @@ -103,11 +106,9 @@ public class App extends Application { } Thread.sleep(100); updateMessage("Burger's done!"); - return addedFilling; } }; - showSplash( stage, boatTask, @@ -120,7 +121,6 @@ public class App extends Application { } ); new Thread(boatTask).start(); - } /** @@ -134,7 +134,7 @@ public class App extends Application { public void loadTitleScreen() throws Exception { stage = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource - ("/visualiser/scenes/titleScreen.fxml")); + ("/visualiser/scenes/title.fxml")); Parent root = loader.load(); stage.setResizable(false); Scene scene = new Scene(root); diff --git a/racevisionGame/src/main/java/visualiser/model/TrackPoint.java b/racevisionGame/src/main/java/visualiser/model/TrackPoint.java index f3378a43..60a07d3b 100644 --- a/racevisionGame/src/main/java/visualiser/model/TrackPoint.java +++ b/racevisionGame/src/main/java/visualiser/model/TrackPoint.java @@ -8,8 +8,8 @@ import shared.model.GPSCoordinate; * {@link VisualiserBoat Boat} has travelled in a race.
* TrackPoints are displayed on a * {@link ResizableRaceCanvas}, via the - * {@link visualiser.Controllers.RaceController}.
- * Track points can be made visible or hidden via the RaceController's + * {@link visualiser.Controllers.RaceViewController}.
+ * Track points can be made visible or hidden via the RaceViewController's * {@link Annotations}. */ public class TrackPoint { diff --git a/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java b/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java index 555def15..12e2ee37 100644 --- a/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java +++ b/racevisionGame/src/main/java/visualiser/model/VisualiserBoat.java @@ -17,7 +17,7 @@ import java.util.List; * This class is used to represent and store information about a boat which may * travel around in a race. It is displayed on the * {@link ResizableRaceCanvas ResizableRaceCanvas} via the - * {@link visualiser.Controllers.RaceController RaceController}. + * {@link visualiser.Controllers.RaceViewController RaceViewController}. */ public class VisualiserBoat extends Boat { diff --git a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java index d5ab9b66..467499be 100644 --- a/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java +++ b/racevisionGame/src/main/java/visualiser/model/VisualiserRaceEvent.java @@ -66,7 +66,7 @@ public class VisualiserRaceEvent { this.serverConnection = new ServerConnection(socket, visualiserRaceState, raceCommands, requestType); - this.serverConnectionThread = new Thread(serverConnection, "StartController.enterLobby()->serverConnection thread " + serverConnection); + this.serverConnectionThread = new Thread(serverConnection, "RaceStartController.enterLobby()->serverConnection thread " + serverConnection); this.serverConnectionThread.start(); diff --git a/racevisionGame/src/main/java/visualiser/network/ServerConnection.java b/racevisionGame/src/main/java/visualiser/network/ServerConnection.java index 5d6d8773..70cc7631 100644 --- a/racevisionGame/src/main/java/visualiser/network/ServerConnection.java +++ b/racevisionGame/src/main/java/visualiser/network/ServerConnection.java @@ -7,14 +7,12 @@ import network.MessageRouters.MessageRouter; import network.Messages.AC35Data; import network.Messages.Enums.MessageType; import network.Messages.Enums.RequestToJoinEnum; -import network.Messages.LatestMessages; import network.StreamRelated.MessageDeserialiser; import network.StreamRelated.MessageSerialiser; import shared.model.RunnableWithFramePeriod; -import visualiser.model.VisualiserRaceEvent; -import visualiser.model.VisualiserRaceController; import visualiser.enums.ConnectionToServerState; import visualiser.gameController.ControllerClient; +import visualiser.model.VisualiserRaceController; import visualiser.model.VisualiserRaceState; import java.io.IOException; @@ -310,7 +308,7 @@ public class ServerConnection implements RunnableWithFramePeriod { } - //TODO create input controller here. RaceController should query for it, if it exists. + //TODO create input controller here. RaceViewController should query for it, if it exists. private void createPlayerInputController() { this.messageRouter.addRoute(MessageType.BOATACTION, messageSerialiser.getMessagesToSend()); diff --git a/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml b/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml index 1721d988..196c4c10 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/arrow.fxml @@ -8,7 +8,7 @@ - + diff --git a/racevisionGame/src/main/resources/visualiser/scenes/controls.fxml b/racevisionGame/src/main/resources/visualiser/scenes/controls.fxml deleted file mode 100644 index f82ffa17..00000000 --- a/racevisionGame/src/main/resources/visualiser/scenes/controls.fxml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml b/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml deleted file mode 100644 index ab14abaf..00000000 --- a/racevisionGame/src/main/resources/visualiser/scenes/hostgame.fxml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/racevisionGame/src/main/resources/visualiser/scenes/keyBindings.fxml b/racevisionGame/src/main/resources/visualiser/scenes/keyBindings.fxml index 037efdab..40217567 100644 --- a/racevisionGame/src/main/resources/visualiser/scenes/keyBindings.fxml +++ b/racevisionGame/src/main/resources/visualiser/scenes/keyBindings.fxml @@ -6,7 +6,7 @@ - + + + diff --git a/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml b/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml deleted file mode 100644 index 9e067b8e..00000000 --- a/racevisionGame/src/main/resources/visualiser/scenes/titleScreen.fxml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -