package visualiser.Controllers; import javafx.fxml.FXML; import javafx.scene.control.Label; import javafx.scene.control.RadioButton; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Pane; import javafx.stage.Modality; import mock.exceptions.EventConstructionException; import visualiser.app.App; import java.io.IOException; /** * Controller for the opening title window. * Has two initial buttons for a user to decide how to play their game. Has a * burger-boat and comic sans styling to allure and entice users into playing * the game. */ public class TitleController extends Controller { private @FXML RadioButton dayModeRD; private @FXML RadioButton nightModeRD; private @FXML Label tutorialLabel; private @FXML Pane menuPane; private @FXML ImageView imgSun; /** * Method called when the 'host a game' button is pressed. * Opens the next window allowing a user to host their own game. * Currently used to run the RaceVision mock. * @throws IOException if main has problems */ public void hostAGame() throws IOException { loadScene("hostGame.fxml"); } /** * To be implemented at a later date- will open the next scene displaying * games a player can join. Place holder method for now! * @throws IOException socket error */ public void joinAGame() throws IOException { loadScene("lobby.fxml"); } /** * Switches the css of the program to day mode theme */ public void setDayMode(){ dayModeRD.getScene().getStylesheets().clear(); menuPane.getStylesheets().clear(); imgSun.setImage(new Image(getClass().getResource("/visualiser/images/sun.png").toExternalForm())); dayModeRD.getScene().getStylesheets().add("/css/dayMode.css"); menuPane.setStyle("-fx-background-color: #6be6ff;"); nightModeRD.setSelected(false); App.dayMode = true; } /** * Switches the css of the program to night mode theme */ public void setNightMode(){ nightModeRD.getScene().getStylesheets().clear(); menuPane.getStylesheets().clear(); imgSun.setImage(new Image(getClass().getResource("/visualiser/images/sunsleep.png").toExternalForm())); nightModeRD.getScene().getStylesheets().add("/css/nightMode.css"); menuPane.setStyle("-fx-background-color: #1f2c60;"); dayModeRD.setSelected(false); App.dayMode = false; } /** * Called when control button is pressed. New pop up window displaying controls */ public void showControls(){ try { loadPopupScene("keyBindings.fxml", "Game Controls", Modality.WINDOW_MODAL); } catch (IOException e) { e.printStackTrace(); } } public void tutorialStartPressed() throws IOException, EventConstructionException { App.gameType = 4; HostGameController hgc = new HostGameController(); hgc.setCurrentMapIndex(4); hgc.hostGamePressed(); } }