package visualiser.Controllers; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.RadioButton; import javafx.scene.layout.AnchorPane; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.WindowEvent; import visualiser.app.App; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; /** * 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 { //FXML stuff @FXML Button btnJoin; @FXML AnchorPane titleWrapper; @FXML RadioButton dayModeRD; @FXML RadioButton nightModeRD; /** * 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 { titleWrapper.setVisible(false); parent.hostGame(); App.getStage().setResizable(true); } /** * Switch the scene to the title page. */ public void enterTitle(){ titleWrapper.setVisible(true); } /** * To be implemented at a later date- will open the next scene displaying * games a player can join. Place holder method for now! */ public void joinAGame() { titleWrapper.setVisible(false); parent.enterLobby(); App.getStage().setResizable(true); } /** * Switches the css of the program to day mode theme */ public void setDayMode(){ dayModeRD.getScene().getStylesheets().clear(); dayModeRD.getScene().getStylesheets().add("/css/dayMode.css"); nightModeRD.setSelected(false); } /** * Switches the css of the program to night mode theme */ public void setNightMode(){ nightModeRD.getScene().getStylesheets().clear(); nightModeRD.getScene().getStylesheets().add("/css/nightMode.css"); dayModeRD.setSelected(false); } @Override public void initialize(URL location, ResourceBundle resources) { } /** * Called when control button is pressed. New pop up window displaying controls */ public void controlBtnPressed(){ try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("/visualiser/scenes/keyBindings.fxml")); Parent layout = loader.load(); Scene scene = new Scene(layout); Stage popupStage = new Stage(); popupStage.setResizable(false); popupStage.setTitle("Game Controls"); popupStage.initModality(Modality.WINDOW_MODAL); popupStage.centerOnScreen(); popupStage.setScene(scene); popupStage.show(); KeyBindingsController controller = loader.getController(); popupStage.setOnCloseRequest(new EventHandler() { public void handle(WindowEvent we) { if (we.getEventType() == WindowEvent.WINDOW_CLOSE_REQUEST) { controller.onExit(we); } } }); } catch (Exception e){ e.printStackTrace(); } } }