Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rewind.client.menu;
- import javafx.application.Application;
- import javafx.application.Platform;
- import javafx.geometry.Insets;
- import javafx.scene.Node;
- import javafx.scene.Group;
- import javafx.scene.SubScene;
- import javafx.scene.control.*;
- import javafx.scene.layout.GridPane;
- import javafx.scene.input.KeyEvent;
- import javafx.scene.input.KeyCode;
- import javafx.event.EventHandler;
- import javafx.stage.Stage;
- import javafx.util.Pair;
- import rewind.basicrooms.TestRoom;
- import rewind.client.jfx.UI;
- import rewind.client.network.NetworkTest;
- //map creator link
- import rewind.client.mapCreator.mapCreator;
- // credits scroll link
- import rewind.client.creditsScroll.CreditsScroll;
- public class TitleMenu extends MenuGroup {
- public TitleMenu(Stage ps, Group g){
- super(ps,g);
- //todo - keymapping class
- //enables esc key to toggle menu.
- getPrimaryStage().addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>
- () {
- @Override
- public void handle(KeyEvent t) {
- if(t.getCode()==KeyCode.ESCAPE)
- {
- escToMenu();
- }
- }
- });
- generateMenu();
- }
- /**
- * generates the main menu.
- */
- public void generateMenu(){
- // child nodes must be added above parent nodes.
- // the function of the button and conditions when it is displayed can be overridden.
- //MISC
- MenuNode goBack = new MenuNode("Back"){
- @Override
- public void selectItem() {
- backMenu();
- //todo - keymap escape button to this
- }
- };
- menuList.add(goBack);
- //KEYBOARD SETTINGS SUBMENU
- MenuNode gameKeyMap = new MenuNode("In Game Key mappings"){
- @Override
- public void selectItem() {
- }
- };
- menuList.add(gameKeyMap);
- MenuNode levelEditorKeyMap = new MenuNode("Level Editor Keymap"){
- @Override
- public void selectItem() {
- mapCreator.main(null);
- }
- };
- menuList.add(levelEditorKeyMap);
- //Added a level editor button
- MenuNode levelEditor = new MenuNode("Level Editor") {
- @Override
- public void selectItem() {
- mapCreator.main(null);
- }
- };
- menuList.add(levelEditor);
- //CONTROL SETTINGS SUBMENU
- MenuNode keyboardSetupSubmenu =
- new MenuNode(new MenuNode[]{gameKeyMap,levelEditorKeyMap,goBack}, "Keyboard Setup"){
- @Override
- public void selectItem() {
- refreshMenu(this);
- }
- };
- menuList.add(keyboardSetupSubmenu);
- //SETTINGS SUBMENU
- MenuNode networkTest = new MenuNode("Network Test"){
- @Override
- public void selectItem() {
- rewind.client.network.NetworkTest.setupTestUI(getPrimaryStage());
- }
- };
- menuList.add(networkTest);
- MenuNode chatSeting = new MenuNode(new MenuNode[]{goBack}, "Chat Settings"){
- @Override
- public void selectItem() {
- System.out.println("chat settings");
- }
- };
- menuList.add(chatSeting);
- MenuNode displaySetting = new MenuNode(new MenuNode[]{goBack}, "Display Settings"){
- @Override
- public void selectItem() {
- System.out.println("display settings");
- }
- };
- menuList.add(displaySetting);
- MenuNode controlSettingSubMenu =
- new MenuNode(new MenuNode[]{keyboardSetupSubmenu,goBack}, "Control Settings"){
- @Override
- public void selectItem() {
- refreshMenu(this);
- }
- };
- menuList.add(controlSettingSubMenu);
- MenuNode settings = new MenuNode(
- new MenuNode[]{controlSettingSubMenu,displaySetting,chatSeting,networkTest,goBack}
- , "Settings"){
- @Override
- public void selectItem() {
- refreshMenu(this);
- }
- };
- menuList.add(settings);
- MenuNode viewCredits = new MenuNode("View credits"){
- @Override
- public void selectItem() {
- Application scroll = new CreditsScroll();
- Stage scrollStage = new Stage();
- try {
- scroll.start(scrollStage);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- };
- menuList.add(viewCredits);
- MenuNode exitGame = new MenuNode("Exit Game"){
- @Override
- public void selectItem() {
- // Exit the program
- System.exit(0);
- }
- };
- menuList.add(exitGame);
- MenuNode contMultiGame = new MenuNode("Continue Multiplayer Game"){
- @Override
- public void selectItem() {
- hideMenu();
- getGroup().getChildren().remove(GameState.getCurrentGame());
- GameState.setCurrentGame(GameState.getMultiGame());
- getGroup().getChildren().add(GameState.getSingleGame());
- }
- @Override
- public boolean showMenuNode(){
- return GameState.hasMultiGame();
- }
- };
- menuList.add(contMultiGame);
- MenuNode newMultiGame = new MenuNode("New Multiplayer Game"){
- @Override
- public void selectItem() {
- System.out.println("Pass in multiplayer subscreen here. See singleplayer example");
- }
- @Override
- public boolean showMenuNode(){
- return !GameState.hasMultiGame();
- }
- };
- menuList.add(newMultiGame);
- MenuNode contSingGame = new MenuNode("Continue Single Player Game"){
- @Override
- public void selectItem() {
- hideMenu();
- GameState.getCurrentGame().setEffect(null);
- getGroup().getChildren().remove(GameState.getCurrentGame());
- GameState.setCurrentGame(GameState.getSingleGame());
- getGroup().getChildren().add(GameState.getSingleGame());
- }
- @Override
- public boolean showMenuNode(){return GameState.hasSingleGame();}
- };
- menuList.add(contSingGame);
- MenuNode newGame = new MenuNode("New Game"){
- @Override
- public void selectItem() {
- //UI ui = new UI();
- //SubScene old = new SubScene(ui.setupMainScreen(),1920,1080)
- TestRoom game = new TestRoom(getPrimaryStage());
- GameState.storeSingleGame(game.start());
- GameState.setCurrentGame(GameState.getSingleGame());
- getGroup().getChildren().add(GameState.getCurrentGame());
- hideMenu();
- }
- @Override
- public boolean showMenuNode(){return !GameState.hasSingleGame();}
- };
- menuList.add(newGame);
- MenuNode register = new MenuNode("Register") {
- @Override
- public void selectItem() {
- // Creating the dialog.
- Dialog<Pair<String, String>> registerDialog = new Dialog<>();
- registerDialog.setTitle("Register Dialog");
- registerDialog.setHeaderText("Please register to play Rewind");
- // Set the button types.
- ButtonType registerButtonType = new ButtonType("Register", ButtonBar.ButtonData.OK_DONE);
- registerDialog.getDialogPane().getButtonTypes().addAll(registerButtonType, ButtonType.CANCEL);
- // Create the username and password labels and fields.
- GridPane grid = new GridPane();
- grid.setHgap(10);
- grid.setVgap(10);
- grid.setPadding(new Insets(20, 150, 10, 10));
- TextField username = new TextField();
- username.setPromptText("Username");
- PasswordField password = new PasswordField();
- password.setPromptText("Password");
- PasswordField confirmPassword = new PasswordField();
- confirmPassword.setPromptText("Confirm password");
- grid.add(new Label("Username:"), 0, 0);
- grid.add(username, 1, 0);
- grid.add(new Label("Password:"), 0, 1);
- grid.add(password, 1, 1);
- grid.add(new Label("Confirm password:"), 0, 2 );
- grid.add(confirmPassword, 1, 2 );
- // Enable/Disable register button depending on whether a username was entered.
- Node registerButton = registerDialog.getDialogPane().lookupButton(registerButtonType);
- registerButton.setDisable(true);
- // Do some validation (using the Java 8 lambda syntax).
- username.textProperty().addListener((observable, oldValue, newValue) -> {
- registerButton.setDisable(newValue.trim().isEmpty());
- });
- registerDialog.getDialogPane().setContent(grid);
- // Focus on the username field by default.
- Platform.runLater(() -> username.requestFocus());
- registerDialog.show();
- //todo - implement Changelistener for focusedProperty to check if username entered is available
- //todo - validate equality of password and confirmPassword
- // Convert the result to a username-password-pair when the register button is clicked.
- registerDialog.setResultConverter(dialogButton -> {
- if (dialogButton == registerButtonType) {
- System.out.printf("username: %s, password: %s", username.getText(), password.getText());
- return new Pair<>(username.getText(), password.getText());
- }
- return null;
- });
- //todo - on registerButton action store <username, password> pair in DB
- }
- @Override
- public boolean showMenuNode(){
- return true;
- }
- };
- menuList.add(register);
- MenuNode login = new MenuNode("Login") {
- @Override
- public void selectItem() {
- // Creating the dialog.
- Dialog<Pair<String, String>> loginDialog = new Dialog<>();
- loginDialog.setTitle("Login Dialog");
- loginDialog.setHeaderText("Please log in to play Rewind");
- // Set the button types.
- ButtonType loginButtonType = new ButtonType("Login", ButtonBar.ButtonData.OK_DONE);
- loginDialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
- // Create the username and password labels and fields.
- GridPane grid = new GridPane();
- grid.setHgap(10);
- grid.setVgap(10);
- grid.setPadding(new Insets(20, 150, 10, 10));
- TextField username = new TextField();
- username.setPromptText("Username");
- PasswordField password = new PasswordField();
- password.setPromptText("Password");
- //CheckBox remember = new CheckBox();
- grid.add(new Label("Username:"), 0, 0);
- grid.add(username, 1, 0);
- grid.add(new Label("Password:"), 0, 1);
- grid.add(password, 1, 1);
- //grid.add(new Label("Remember me"), 0, 2);
- //grid.add(remember, 1, 2);
- // Enable/Disable register button depending on whether a username was entered.
- Node loginButton = loginDialog.getDialogPane().lookupButton(loginButtonType);
- loginButton.setDisable(true);
- // Do some validation (using the Java 8 lambda syntax).
- username.textProperty().addListener((observable, oldValue, newValue) -> {
- loginButton.setDisable(newValue.trim().isEmpty());
- });
- loginDialog.getDialogPane().setContent(grid);
- // Focus on the username field by default.
- Platform.runLater(() -> username.requestFocus());
- loginDialog.show();
- // Convert the result to a username-password-pair when the login button is clicked.
- loginDialog.setResultConverter(dialogButton -> {
- if (dialogButton == loginButtonType) {
- System.out.printf("username: %s, password: %s", username.getText(), password.getText());
- return new Pair<>(username.getText(), password.getText());
- }
- return null;
- });
- //todo - check <username, password> pair in DB
- //todo - implement 'remember me' functionality
- }
- @Override
- public boolean showMenuNode(){
- // todo - get login status
- return true;
- }
- };
- menuList.add(login);
- // Create a TestRoom for developing player controls.
- // To be removed when actual rooms are added to the game.
- MenuNode testControls = new MenuNode("Test Controls"){
- @Override
- public void selectItem() {
- System.out.println("Test Controls");
- TestRoom game = new TestRoom(getPrimaryStage());
- GameState.storeSingleGame(game.start());
- GameState.setCurrentGame(GameState.getSingleGame());
- getGroup().getChildren().add(GameState.getCurrentGame());
- hideMenu();
- }
- @Override
- public boolean showMenuNode(){
- return true;
- }
- };
- menuList.add(testControls);
- MenuNode rootNode = new MenuNode(this,
- new MenuNode[]{login,register,newGame,contSingGame,newMultiGame,contMultiGame,settings,viewCredits,exitGame,testControls}) {
- @Override
- public void selectItem() {
- System.out.printf("menu root created");
- }
- };
- menuList.add(rootNode);
- refreshMenu(getCrumb());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement