diff --git a/.idea/workspace (conflicted copy 2023-12-23 155531).xml b/.idea/workspace (conflicted copy 2023-12-23 155531).xml new file mode 100644 index 0000000000000000000000000000000000000000..24902c0f58546cd954def2df78740438f023012a --- /dev/null +++ b/.idea/workspace (conflicted copy 2023-12-23 155531).xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="AutoImportSettings"> + <option name="autoReloadType" value="SELECTIVE" /> + </component> + <component name="ChangeListManager"> + <list default="true" id="b0fb4bdd-29b1-4f86-bd7c-f8c039cc32f2" name="Changes" comment=""> + <change beforePath="$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/resources/fxml/MainMenu.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/MainMenu.fxml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/resources/fxml/MenuBorderPane.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/MenuBorderPane.fxml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/resources/fxml/Multiplayer.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/Multiplayer.fxml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/resources/styles/style.css" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/styles/style.css" afterDir="false" /> + </list> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="MarkdownSettingsMigration"> + <option name="stateVersion" value="1" /> + </component> + <component name="ProjectColorInfo">{ + "customColor": "", + "associatedIndex": 5 +}</component> + <component name="ProjectId" id="2Zs6XcL7ZlzU8xTNH2hOhkYjatb" /> + <component name="ProjectViewState"> + <option name="hideEmptyMiddlePackages" value="true" /> + <option name="showLibraryContents" value="true" /> + </component> + <component name="PropertiesComponent">{ + "keyToString": { + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "WebServerToolWindowFactoryState": "false", + "git-widget-placeholder": "ui", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "vue.rearranger.settings.migration": "true" + } +}</component> + <component name="RunManager"> + <configuration name="Main" type="Application" factoryName="Application"> + <option name="MAIN_CLASS_NAME" value="de.hdm_stuttgart.battlearena.Main.Main" /> + <module name="BattleArena" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> + </component> + <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="b0fb4bdd-29b1-4f86-bd7c-f8c039cc32f2" name="Changes" comment="" /> + <created>1703198483742</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1703198483742</updated> + <workItem from="1703198485662" duration="453000" /> + <workItem from="1703342937046" duration="2000" /> + </task> + <servers /> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="version" value="3" /> + </component> +</project> \ No newline at end of file diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java new file mode 100644 index 0000000000000000000000000000000000000000..9839572bf1a22e044122015888721876ae2eca76 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CommunityMapController.java @@ -0,0 +1,38 @@ +package de.hdm_stuttgart.battlearena.Controller; + +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.geometry.Rectangle2D; +import javafx.scene.control.TableView; +import javafx.scene.layout.VBox; +import javafx.stage.Screen; + +import java.net.URL; +import java.util.ResourceBundle; + +public class CommunityMapController implements Initializable { + @FXML + private VBox parent; + @FXML + private TableView tableView; + + Rectangle2D screen = Screen.getPrimary().getVisualBounds(); + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + tableView.setOnMouseClicked(mouseEvent -> System.out.println(tableView.getWidth())); + setTableView(); + } + + private void setTableView() { + tableView.setMinHeight(screen.getHeight() * 0.69); + tableView.setMinWidth(screen.getWidth() * 0.66); + } + +// TODO: create map preview + + public void back() { + parent.getChildren().clear(); + parent.getChildren().add(new SceneLoader().loadScene("MapForge")); + } +} 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 91d0eb6d1d299affc71811e806b8c9668e3a0cbb..fb0530cc583c3f31cb7377f2b46fea51bd026740 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java @@ -25,13 +25,16 @@ public class MainMenuController implements Initializable { public void playScene() { switchScene("Play"); } + public void mapScene() { + switchScene("MapForge"); + } public void statisticsScene() { switchScene("Statistics"); } public void settingsScene() { - switchScene("Options"); + switchScene("Settings"); } public void exit() { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java new file mode 100644 index 0000000000000000000000000000000000000000..a8da173b5f38ee8f7353d8826b11f0cec113af0b --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MapForgeController.java @@ -0,0 +1,45 @@ +package de.hdm_stuttgart.battlearena.Controller; + +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.layout.VBox; + +import java.io.IOException; +import java.util.Objects; + +public class MapForgeController { + @FXML + private VBox parent; + SceneLoader sceneLoader = new SceneLoader(); + + public void mapEditorScene() { + try { + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml")))); + MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); + } catch (IOException e) { + throw new RuntimeException(); + } + } + + public void communityMapScene() { + switchScene("CommunityMaps"); + } + + public void updateMapScene() { + try { + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/PlayerCreateScene.fxml")))); + MusicPlayerSingleton.getInstance().getMediaPlayer().dispose(); + } catch (IOException e) { + throw new RuntimeException(); + } + } + + public void back() { + switchScene("MainMenu"); + } + + private void switchScene(String name) { + parent.getChildren().clear(); + parent.getChildren().add(sceneLoader.loadScene(name)); + } +} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java index d4843e4c26050d33aafdb28a421f1e39d11d38c3..2a5e5ea215a8beea0fc81467b22c28f2f1efa3c7 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -50,6 +50,7 @@ public class MenuBorderPaneController implements Initializable { private void easterEgg() { btnRight.setOnMouseClicked(mouseEvent -> { + System.out.println(center.getWidth()); musicCounter++; switch (musicCounter) { case 5: diff --git a/src/main/resources/fxml/CommunityMaps.fxml b/src/main/resources/fxml/CommunityMaps.fxml new file mode 100644 index 0000000000000000000000000000000000000000..688fdfeb48886e94de7668ac0f015652cf6863b9 --- /dev/null +++ b/src/main/resources/fxml/CommunityMaps.fxml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.TableColumn?> +<?import javafx.scene.control.TableView?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> + + +<VBox fx:id="parent" alignment="CENTER" 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.CommunityMapController"> + <children> + <TableView fx:id="tableView" editable="true" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" VBox.vgrow="ALWAYS"> + <columns> + <TableColumn editable="false" prefWidth="75.0" text="ID" /> + <TableColumn editable="false" prefWidth="75.0" text="Name" /> + <TableColumn editable="false" prefWidth="75.0" text="Width" /> + <TableColumn editable="false" prefWidth="75.0" text="Height" /> + <TableColumn editable="false" prefWidth="75.0" text="Downloads" /> + </columns> + <columnResizePolicy> + <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> + </columnResizePolicy> + </TableView> + <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="20.0" VBox.vgrow="ALWAYS"> + <children> + <Button mnemonicParsing="false" onAction="#back" text="Back" /> + <Button mnemonicParsing="false" text="Load" /> + </children> + </HBox> + </children> +</VBox> diff --git a/src/main/resources/fxml/MainMenu.fxml b/src/main/resources/fxml/MainMenu.fxml index 14ea4b313de7d50e1619e9384a33d8c10ff8af37..39b45c2b7b94147fc779dda696f89e11fafa9e44 100644 --- a/src/main/resources/fxml/MainMenu.fxml +++ b/src/main/resources/fxml/MainMenu.fxml @@ -15,7 +15,7 @@ <Insets top="20.0" /> </VBox.margin> </Button> - <Button mnemonicParsing="false" text="Map Creator" VBox.vgrow="ALWAYS" /> + <Button mnemonicParsing="false" onAction="#mapScene" text="Map Forge" VBox.vgrow="ALWAYS" /> <Button mnemonicParsing="false" onAction="#statisticsScene" text="Statistics" VBox.vgrow="ALWAYS" /> <Button mnemonicParsing="false" onAction="#settingsScene" text="Settings" /> <Button fx:id="exitButton" alignment="CENTER" mnemonicParsing="false" onAction="#exit" text="Exit" /> diff --git a/src/main/resources/fxml/MapForge.fxml b/src/main/resources/fxml/MapForge.fxml new file mode 100644 index 0000000000000000000000000000000000000000..7c8074438295b18ec3d2b85bf44db12deafd071d --- /dev/null +++ b/src/main/resources/fxml/MapForge.fxml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.layout.Pane?> +<?import javafx.scene.layout.VBox?> + +<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="50.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MapForgeController"> + <children> + <Pane VBox.vgrow="ALWAYS" /> + <Button mnemonicParsing="false" onAction="#mapEditorScene" text="Map Editor" /> + <Button mnemonicParsing="false" onAction="#communityMapScene" text="Community Maps" /> + <Button mnemonicParsing="false" onAction="#updateMapScene" text="Update Core Maps" /> + <Button mnemonicParsing="false" onAction="#back" text="Back" /> + <Pane VBox.vgrow="ALWAYS" /> + <Pane VBox.vgrow="ALWAYS" /> + </children> +</VBox> diff --git a/src/main/resources/fxml/MenuBorderPane.fxml b/src/main/resources/fxml/MenuBorderPane.fxml index 03549cf9ab3ba93118ee441aa8f37cfa13423e32..ed87f4119563968953eef9ff3013783e8ce18a5e 100644 --- a/src/main/resources/fxml/MenuBorderPane.fxml +++ b/src/main/resources/fxml/MenuBorderPane.fxml @@ -34,6 +34,6 @@ </Button> </left> <center> - <StackPane fx:id="center" prefHeight="150.0" prefWidth="200.0" BorderPane.alignment="CENTER" /> + <StackPane fx:id="center" BorderPane.alignment="CENTER" /> </center> </BorderPane> diff --git a/src/main/resources/fxml/Multiplayer.fxml b/src/main/resources/fxml/Multiplayer.fxml index a3d3ef2a5308d632057aeda91d065d8c74729d5e..58084aaf7c7a25fe3c1090606d195111eac2e025 100644 --- a/src/main/resources/fxml/Multiplayer.fxml +++ b/src/main/resources/fxml/Multiplayer.fxml @@ -7,7 +7,7 @@ <VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="50.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.MultiplayerController"> <children> - <Pane maxHeight="1.7976931348623157E308" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> + <Pane VBox.vgrow="ALWAYS" /> <Button mnemonicParsing="false" onAction="#multiplayerCreateScene" text="Create" VBox.vgrow="ALWAYS"> <VBox.margin> <Insets top="20.0" /> diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css index 5b1275242e63655aa2e44647d83aaf0c58fd0e3a..d884c66e861884069e4baffa75c6361fe0d75548 100644 --- a/src/main/resources/styles/style.css +++ b/src/main/resources/styles/style.css @@ -131,4 +131,6 @@ .skinSelection:pressed { -fx-background-color: rgba(255, 255, 255, 0.3); -} \ No newline at end of file +} + +/* TODO: set tableView style*/ \ No newline at end of file