From c3e1fb8a13630a38d9ce922ccc272f9fbf45599e Mon Sep 17 00:00:00 2001 From: Peter <pt033@hdm-stuttgart.de> Date: Sun, 26 Nov 2023 00:22:33 +0100 Subject: [PATCH] feat(ui): add scene swtich to all scenes, still has duplicated code --- .../Controller/LocalCreateController.java | 12 +++++++++- .../Controller/MainMenuController.java | 21 +++++++++++++++++- .../Controller/MultiplayerController.java | 22 ++++++++++++++++++- .../MultiplayerCreateController.java | 12 +++++++++- .../Controller/MultiplayerJoinController.java | 12 +++++++++- .../Controller/PlayController.java | 22 ++++++++++++++++++- .../hdm_stuttgart/battlearena/Main/Main.java | 3 +++ src/main/resources/fxml/LocalCreate.fxml | 4 ++-- src/main/resources/fxml/MainMenu.fxml | 6 ++--- src/main/resources/fxml/Multiplayer.fxml | 8 +++---- .../resources/fxml/MultiplayerCreate.fxml | 15 +++++++------ src/main/resources/fxml/MultiplayerJoin.fxml | 4 ++-- src/main/resources/fxml/Play.fxml | 8 +++---- 13 files changed, 121 insertions(+), 28 deletions(-) diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java index 8f070dfa..c3abb106 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LocalCreateController.java @@ -1,4 +1,14 @@ package de.hdm_stuttgart.battlearena.Controller; -public class LocalCreateController { +import javafx.fxml.FXML; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; + +public class LocalCreateController extends SceneLoader { + @FXML public BorderPane parent; + + public void playScene() { + Pane pane = new Pane(loadScene("Play")); + parent.setCenter(pane.getChildren().get(0)); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java index 4fa73f1d..db1ccca5 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java @@ -1,4 +1,23 @@ package de.hdm_stuttgart.battlearena.Controller; -public class MainMenuController { +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; +import javafx.stage.Stage; + +public class MainMenuController extends SceneLoader { + @FXML public BorderPane parent; + @FXML public Button exitButton; + + public void playScene() { + Pane pane = new Pane(loadScene("Play")); +// get(0) returns the first item from the getChildren() List + parent.setCenter(pane.getChildren().get(0)); + } + + public void exit() { + Stage stage = (Stage) exitButton.getScene().getWindow(); + stage.close(); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java index e860d29a..35ce9c8b 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerController.java @@ -1,4 +1,24 @@ package de.hdm_stuttgart.battlearena.Controller; -public class MultiplayerController { +import javafx.fxml.FXML; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; + +public class MultiplayerController extends SceneLoader { + @FXML public BorderPane parent; + + public void multiplayerCreateScene() { + Pane pane = new Pane(loadScene("MultiplayerCreate")); + parent.setCenter(pane.getChildren().get(0)); + } + + public void multiplayerJoinScene() { + Pane pane = new Pane(loadScene("MultiplayerJoin")); + parent.setCenter(pane.getChildren().get(0)); + } + + public void playScene() { + Pane pane = new Pane(loadScene("Play")); + parent.setCenter(pane.getChildren().get(0)); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java index 860a75eb..aa497cc6 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerCreateController.java @@ -1,4 +1,14 @@ package de.hdm_stuttgart.battlearena.Controller; -public class MultiplayerCreateController { +import javafx.fxml.FXML; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; + +public class MultiplayerCreateController extends SceneLoader { + @FXML public BorderPane parent; + + public void multiplayerScene() { + Pane pane = new Pane(loadScene("Multiplayer")); + parent.setCenter(pane.getChildren().get(0)); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java index 718bedee..436363c2 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MultiplayerJoinController.java @@ -1,4 +1,14 @@ package de.hdm_stuttgart.battlearena.Controller; -public class MultiplayerJoinController { +import javafx.fxml.FXML; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; + +public class MultiplayerJoinController extends SceneLoader{ + @FXML public BorderPane parent; + + public void multiplayerScene() { + Pane pane = new Pane(loadScene("Multiplayer")); + parent.setCenter(pane.getChildren().get(0)); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java index 3b30742b..821792e8 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/PlayController.java @@ -1,4 +1,24 @@ package de.hdm_stuttgart.battlearena.Controller; -public class PlayController { +import javafx.fxml.FXML; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; + +public class PlayController extends SceneLoader { + @FXML public BorderPane parent; + + public void mainMenuScene() { + Pane pane = new Pane(loadScene("MainMenu")); + parent.setCenter(pane.getChildren().get(0)); + } + + public void localScene() { + Pane pane = new Pane(loadScene("LocalCreate")); + parent.setCenter(pane.getChildren().get(0)); + } + + public void multiplayerScene() { + Pane pane = new Pane(loadScene("Multiplayer")); + parent.setCenter(pane.getChildren().get(0)); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java index f2952c69..31ddc730 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java @@ -27,6 +27,9 @@ public class Main extends Application { stage.setTitle("BattleArena"); stage.setScene(scene); + stage.minHeightProperty().setValue(400); + stage.minWidthProperty().setValue(600); + stage.setMaximized(true); stage.show(); log.debug("Project started successfully!"); diff --git a/src/main/resources/fxml/LocalCreate.fxml b/src/main/resources/fxml/LocalCreate.fxml index 962dfe3d..c52d798e 100644 --- a/src/main/resources/fxml/LocalCreate.fxml +++ b/src/main/resources/fxml/LocalCreate.fxml @@ -11,7 +11,7 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Text?> -<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.LocalCreateController"> +<BorderPane fx:id="parent" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.LocalCreateController"> <center> <VBox alignment="TOP_CENTER" spacing="10.0" BorderPane.alignment="TOP_CENTER"> <children> @@ -76,7 +76,7 @@ </children> </HBox> <Button mnemonicParsing="false" text="Start" /> - <Button mnemonicParsing="false" text="Back"> + <Button mnemonicParsing="false" onAction="#playScene" text="Back"> <VBox.margin> <Insets bottom="50.0" /> </VBox.margin> diff --git a/src/main/resources/fxml/MainMenu.fxml b/src/main/resources/fxml/MainMenu.fxml index 1fcdec85..58e9be7c 100644 --- a/src/main/resources/fxml/MainMenu.fxml +++ b/src/main/resources/fxml/MainMenu.fxml @@ -6,19 +6,19 @@ <?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.VBox?> -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MainMenuController"> +<BorderPane fx:id="parent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MainMenuController"> <center> <VBox alignment="CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="100.0" spacing="50.0" BorderPane.alignment="CENTER"> <children> <Pane VBox.vgrow="ALWAYS" /> - <Button mnemonicParsing="false" text="Play" VBox.vgrow="ALWAYS"> + <Button mnemonicParsing="false" onAction="#playScene" text="Play" VBox.vgrow="ALWAYS"> <VBox.margin> <Insets top="20.0" /> </VBox.margin> </Button> <Button mnemonicParsing="false" text="Map Creator" VBox.vgrow="ALWAYS" /> <Button mnemonicParsing="false" text="Statistics" VBox.vgrow="ALWAYS" /> - <Button alignment="CENTER" mnemonicParsing="false" text="Exit" /> + <Button fx:id="exitButton" alignment="CENTER" mnemonicParsing="false" onAction="#exit" text="Exit" /> <Pane VBox.vgrow="ALWAYS" /> <Pane layoutX="10.0" layoutY="395.0" VBox.vgrow="ALWAYS" /> </children> diff --git a/src/main/resources/fxml/Multiplayer.fxml b/src/main/resources/fxml/Multiplayer.fxml index d3708a3c..f23ded2b 100644 --- a/src/main/resources/fxml/Multiplayer.fxml +++ b/src/main/resources/fxml/Multiplayer.fxml @@ -6,21 +6,21 @@ <?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.VBox?> -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayController"> +<BorderPane fx:id="parent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerController"> <center> <VBox alignment="TOP_CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="100.0" spacing="50.0" BorderPane.alignment="CENTER"> <children> <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> - <Button mnemonicParsing="false" text="Create" VBox.vgrow="ALWAYS"> + <Button mnemonicParsing="false" onAction="#multiplayerCreateScene" text="Create" VBox.vgrow="ALWAYS"> <VBox.margin> <Insets top="20.0" /> </VBox.margin> </Button> - <Button mnemonicParsing="false" text="Join" VBox.vgrow="ALWAYS"> + <Button mnemonicParsing="false" onAction="#multiplayerJoinScene" text="Join" VBox.vgrow="ALWAYS"> <VBox.margin> <Insets bottom="50.0" /> </VBox.margin></Button> - <Button alignment="CENTER" mnemonicParsing="false" text="Back"> + <Button alignment="CENTER" mnemonicParsing="false" onAction="#playScene" text="Back"> <VBox.margin> <Insets /> </VBox.margin></Button> diff --git a/src/main/resources/fxml/MultiplayerCreate.fxml b/src/main/resources/fxml/MultiplayerCreate.fxml index 734dd97f..d9bc89d6 100644 --- a/src/main/resources/fxml/MultiplayerCreate.fxml +++ b/src/main/resources/fxml/MultiplayerCreate.fxml @@ -11,10 +11,11 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Text?> -<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerCreateController"> +<BorderPane fx:id="parent" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerCreateController"> <center> - <VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER"> + <VBox alignment="TOP_CENTER" prefHeight="200.0" prefWidth="100.0" spacing="20.0" BorderPane.alignment="CENTER"> <children> + <Pane VBox.vgrow="ALWAYS" /> <HBox alignment="TOP_CENTER" spacing="20.0"> <children> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" /> @@ -24,14 +25,12 @@ <Insets top="50.0" /> </VBox.margin> </HBox> - <Pane prefHeight="200.0" prefWidth="600.0" /> <HBox alignment="TOP_CENTER" layoutX="10.0" layoutY="10.0" maxWidth="-Infinity" minWidth="-Infinity" prefHeight="25.0" prefWidth="213.0" spacing="20.0"> <children> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" /> <TextField /> </children> </HBox> - <Pane prefHeight="200.0" prefWidth="200.0" /> <HBox alignment="TOP_CENTER" layoutX="10.0" layoutY="110.0" spacing="10.0"> <children> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text:" /> @@ -39,7 +38,7 @@ <RadioButton mnemonicParsing="false" text="No" /> </children> </HBox> - <AnchorPane prefHeight="200.0" prefWidth="200.0"> + <AnchorPane minHeight="-Infinity" prefHeight="39.0" prefWidth="600.0"> <children> <VBox alignment="TOP_CENTER" layoutX="250.0" prefHeight="200.0" prefWidth="100.0" AnchorPane.leftAnchor="250.0" AnchorPane.rightAnchor="250.0"> <children> @@ -51,8 +50,10 @@ <Insets top="20.0" /> </VBox.margin> </AnchorPane> - <Button mnemonicParsing="false" text="Button" /> - <Button mnemonicParsing="false" text="Button" /> + <Button mnemonicParsing="false" text="Start" /> + <Button mnemonicParsing="false" onAction="#multiplayerScene" text="Back" /> + <Pane layoutX="10.0" layoutY="398.0" VBox.vgrow="ALWAYS" /> + <Pane layoutX="10.0" layoutY="393.0" VBox.vgrow="ALWAYS" /> </children> </VBox> </center> diff --git a/src/main/resources/fxml/MultiplayerJoin.fxml b/src/main/resources/fxml/MultiplayerJoin.fxml index 413935d5..9126182f 100644 --- a/src/main/resources/fxml/MultiplayerJoin.fxml +++ b/src/main/resources/fxml/MultiplayerJoin.fxml @@ -7,7 +7,7 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Text?> -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayController"> +<BorderPane fx:id="parent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerJoinController"> <center> <VBox alignment="TOP_CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="100.0" spacing="50.0" BorderPane.alignment="CENTER"> <children> @@ -17,7 +17,7 @@ <Button mnemonicParsing="false" text="Connect" VBox.vgrow="ALWAYS" /> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="[Error Message]" /> <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> - <Button alignment="CENTER" mnemonicParsing="false" text="Back" /> + <Button alignment="CENTER" mnemonicParsing="false" onAction="#multiplayerScene" text="Back" /> <Pane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="20.0" VBox.vgrow="ALWAYS" /> </children> </VBox> diff --git a/src/main/resources/fxml/Play.fxml b/src/main/resources/fxml/Play.fxml index ffd2f0dd..ccd2f64c 100644 --- a/src/main/resources/fxml/Play.fxml +++ b/src/main/resources/fxml/Play.fxml @@ -6,18 +6,18 @@ <?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.VBox?> -<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayController"> +<BorderPane fx:id="parent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.PlayController"> <center> <VBox alignment="TOP_CENTER" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="100.0" spacing="50.0" BorderPane.alignment="CENTER"> <children> <Pane VBox.vgrow="ALWAYS" /> - <Button mnemonicParsing="false" text="Local" VBox.vgrow="ALWAYS"> + <Button mnemonicParsing="false" onAction="#localScene" text="Local" VBox.vgrow="ALWAYS"> <VBox.margin> <Insets top="20.0" /> </VBox.margin> </Button> - <Button mnemonicParsing="false" text="Multiplayer" VBox.vgrow="ALWAYS" /> - <Button alignment="CENTER" mnemonicParsing="false" text="Back"> + <Button mnemonicParsing="false" onAction="#multiplayerScene" text="Multiplayer" VBox.vgrow="ALWAYS" /> + <Button alignment="CENTER" mnemonicParsing="false" onAction="#mainMenuScene" text="Back"> <VBox.margin> <Insets top="50.0" /> </VBox.margin></Button> -- GitLab