diff --git a/src/main/java/seng302/visualiser/controllers/ViewManager.java b/src/main/java/seng302/visualiser/controllers/ViewManager.java index 344b7e30..d4cc1fa7 100644 --- a/src/main/java/seng302/visualiser/controllers/ViewManager.java +++ b/src/main/java/seng302/visualiser/controllers/ViewManager.java @@ -5,12 +5,15 @@ import com.jfoenix.controls.JFXDialog; import javafx.application.Platform; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; +import javafx.geometry.Rectangle2D; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; +import javafx.stage.Screen; import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,18 +36,18 @@ public class ViewManager { private Logger logger = LoggerFactory.getLogger(ViewManager.class); private Stage stage; - private ViewManager(){ + private ViewManager() { properties = new HashMap<>(); } private FXMLLoader loadFxml(String fxmlLocation) { return new FXMLLoader( - getClass().getResource(fxmlLocation) + getClass().getResource(fxmlLocation) ); } - public static ViewManager getInstance(){ - if (instance == null){ + public static ViewManager getInstance() { + if (instance == null) { instance = new ViewManager(); } @@ -86,7 +89,7 @@ public class ViewManager { } private void checkCompatibility() { - if(BonjourInstallChecker.isBonjourSupported()){ + if (BonjourInstallChecker.isBonjourSupported()) { BonjourInstallChecker.openInstallUrl(); } } @@ -105,7 +108,7 @@ public class ViewManager { return decorator; } - public void setScene(Node scene){ + public void setScene(Node scene) { Platform.runLater(() -> decorator.setContent(scene)); } @@ -122,15 +125,15 @@ public class ViewManager { } } - public GameClient getGameClient(){ + public GameClient getGameClient() { return gameClient; } - public String getProperty(String key){ + public String getProperty(String key) { return properties.get(key); } - public void setProperty(String key, String val){ + public void setProperty(String key, String val) { properties.put(key, val); } @@ -138,11 +141,11 @@ public class ViewManager { this.playerList = playerList; } - public ObservableList getPlayerList(){ + public ObservableList getPlayerList() { return playerList; } - public LobbyController goToLobby(Boolean disableReadyButton){ + public LobbyController goToLobby(Boolean disableReadyButton) { FXMLLoader loader = loadFxml("/views/LobbyView.fxml"); try { @@ -151,7 +154,7 @@ public class ViewManager { logger.error("Could not load lobby view"); } - if (disableReadyButton){ + if (disableReadyButton) { LobbyController lobbyController = loader.getController(); lobbyController.disableReadyButton(); } @@ -162,34 +165,52 @@ public class ViewManager { public RaceViewController loadRaceView() { FXMLLoader loader = loadFxml("/views/RaceView.fxml"); - try { - setScene(loader.load()); - } catch (IOException e) { - e.printStackTrace(); - } + // have to create a new stage and set the race view maximized as JFoenix decorator has + // bug causes stage cannot be fully maximised. + Platform.runLater(() -> { + try { + stage.close(); - decorator.getScene().setOnKeyPressed(gameClient::keyPressed); - decorator.getScene().setOnKeyReleased(gameClient::keyReleased); + Scene scene = new Scene(loader.load()); + // set key press event to catch key stoke + scene.setOnKeyPressed(gameClient::keyPressed); + scene.setOnKeyReleased(gameClient::keyReleased); + + Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds(); + stage = new Stage(); + stage.setOnCloseRequest(e -> closeAll()); + stage.setX(visualBounds.getMinX()); + stage.setY(visualBounds.getMinY()); + stage.setWidth(visualBounds.getWidth()); + stage.setHeight(visualBounds.getHeight()); + stage.setMaximized(true); + stage.setFullScreen(true); + stage.setScene(scene); + stage.show(); + } catch (Exception e) { + e.printStackTrace(); + } + }); Sounds.stopMusic(); Sounds.playRaceMusic(); return loader.getController(); } - public JFXDialog loadCustomizationDialog(StackPane parent, LobbyController lobbyController, Color playerColor, String name) { + public JFXDialog loadCustomizationDialog(StackPane parent, LobbyController lobbyController, + Color playerColor, String name) { FXMLLoader dialog = loadFxml("/views/dialogs/BoatCustomizeDialog.fxml"); JFXDialog customizationDialog = null; try { customizationDialog = new JFXDialog(parent, dialog.load(), - JFXDialog.DialogTransition.CENTER); + JFXDialog.DialogTransition.CENTER); } catch (IOException e) { e.printStackTrace(); } - BoatCustomizeController controller = dialog.getController(); controller.setParentController(lobbyController); @@ -198,7 +219,6 @@ public class ViewManager { controller.setServerThread(gameClient.getServerThread()); controller.setPlayerColor(lobbyController.playersColor); - return customizationDialog; } } diff --git a/src/main/resources/css/LobbyView.css b/src/main/resources/css/LobbyView.css index a16f61e4..46dd12ba 100644 --- a/src/main/resources/css/LobbyView.css +++ b/src/main/resources/css/LobbyView.css @@ -21,11 +21,18 @@ -fx-background: transparent; } - #customizeButton, #leaveLobbyButton, #beginRaceButton { -fx-background-color: -fx-pp-light-text-color; /* inverted */ -fx-text-fill: -fx-pp-theme-color; /* inverted */ - -fx-font-size: 16px; + -fx-font-size: 18px; +} + +#customizeButton:hover, #leaveLobbyButton:hover, #beginRaceButton:hover { + -fx-font-size: 20px; +} + +.invertedButton .jfx-rippler { + -jfx-rippler-fill: white; } #connectLabel, #serverPortNumber, #serverHostName { @@ -52,12 +59,6 @@ -fx-background-color: transparent; } -.invertedButton { - -fx-background-color: -fx-pp-light-text-color; /* inverted */ - -fx-text-fill: -fx-pp-theme-color; /* inverted */ - -fx-font-size: 16px; -} - #serverMap { -fx-background-image: url("/images/bg.jpg"); -fx-background-repeat: no-repeat; diff --git a/src/main/resources/css/ServerListView.css b/src/main/resources/css/ServerListView.css index c1f61f17..03669988 100644 --- a/src/main/resources/css/ServerListView.css +++ b/src/main/resources/css/ServerListView.css @@ -32,12 +32,21 @@ -fx-text-fill: -fx-pp-light-text-color; } +#hostButton:hover { + -fx-background-color: -fx-pp-light-theme-color; + -fx-font-size: 23px; +} + #connectButton { -fx-background-color: -fx-pp-light-text-color; /* inverted */ -fx-text-fill: -fx-pp-theme-color; /* inverted */ -fx-font-size: 20px; } +#connectButton:hover { + -fx-font-size: 23px; +} + #connectLabel, #serverPortNumber, #serverHostName { -fx-text-fill: -fx-pp-light-text-color; -fx-font-size: 18px; diff --git a/src/main/resources/css/dialogs/BoatCustomize.css b/src/main/resources/css/dialogs/BoatCustomize.css new file mode 100644 index 00000000..d706d970 --- /dev/null +++ b/src/main/resources/css/dialogs/BoatCustomize.css @@ -0,0 +1,29 @@ +* { + -fx-text-fill: -fx-pp-dark-text-color; +} + +#submitBtn { + -fx-background-color: -fx-pp-theme-color; + -fx-text-fill: -fx-pp-light-text-color; + -fx-font-size: 20px !important; + -fx-effect: -fx-pp-dropshadow-dark; + -fx-min-width: 130px; +} + +#submitBtn:hover { + -fx-font-size: 23px !important; + -fx-background-color: -fx-pp-light-theme-color; +} + +#hostDialogHeader { + -fx-font-size: 23px !important; +} + +#boatColorLabel, #colorPicker { + -fx-font-size: 18px; +} + +#boatName { + -fx-font-size: 18px; + -fx-prompt-text-fill: -fx-pp-dark-text-color; +} \ No newline at end of file diff --git a/src/main/resources/views/RaceView.fxml b/src/main/resources/views/RaceView.fxml index 2921a2b1..8a14b1a2 100644 --- a/src/main/resources/views/RaceView.fxml +++ b/src/main/resources/views/RaceView.fxml @@ -4,7 +4,11 @@ - + diff --git a/src/main/resources/views/dialogs/BoatCustomizeDialog.fxml b/src/main/resources/views/dialogs/BoatCustomizeDialog.fxml index 57543808..79976bc8 100644 --- a/src/main/resources/views/dialogs/BoatCustomizeDialog.fxml +++ b/src/main/resources/views/dialogs/BoatCustomizeDialog.fxml @@ -25,9 +25,11 @@ - - +