From 9b66ba2be25a3731038bbd3cd8d188f88502d421 Mon Sep 17 00:00:00 2001 From: Peter <pt033@hdm-stuttgart.de> Date: Fri, 8 Dec 2023 17:26:29 +0100 Subject: [PATCH] add(ui): add options scene #14 --- .../Controller/IntroController.java | 1 - .../Controller/MainMenuController.java | 4 ++ .../Controller/OptionsController.java | 44 +++++++++++++++++++ src/main/resources/fxml/MainMenu.fxml | 1 + src/main/resources/fxml/Options.fxml | 25 +++++++++++ src/main/resources/styles/style.css | 11 +++++ 6 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java create mode 100644 src/main/resources/fxml/Options.fxml diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java index 524d9482..cc1eebcb 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java @@ -82,7 +82,6 @@ public class IntroController implements Initializable { } private void nextVideo() { -// TODO: look into not disposing mediaPlayer mediaPlayer.dispose(); file = new File(fileName + videos[counter + 1]); counter++; 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 4b101878..d742f931 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MainMenuController.java @@ -26,6 +26,10 @@ public class MainMenuController { switchScene("Statistics"); } + public void optionsScene() { + switchScene("Options"); + } + public void exit() { Stage stage = (Stage) exitButton.getScene().getWindow(); stage.close(); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java new file mode 100644 index 00000000..413e4ee7 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/OptionsController.java @@ -0,0 +1,44 @@ +package de.hdm_stuttgart.battlearena.Controller; + +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Slider; +import javafx.scene.layout.VBox; + +import java.net.URL; +import java.util.ResourceBundle; + +public class OptionsController implements Initializable { + @FXML public VBox parent; + @FXML public Slider volumeSlider; + SceneLoader sceneLoader = new SceneLoader(); + public int volume; + private boolean setVolume = false; + private void switchScene(String name) { + parent.getChildren().clear(); + parent.getChildren().add(sceneLoader.loadScene(name)); + } + + public void creditScene() { + switchScene("Credits"); + } + + public void mainMenuScene() { + switchScene("MainMenu"); + } + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { +// variables keep getting re-initialized after switching scenes. For now not working!!!!! + if (setVolume) { + volumeSlider.setValue(volume); + } + +// TODO: use Runtime Database to save volume + volumeSlider.setOnMouseReleased(mouseEvent -> { + setVolume = true; + volume = (int) volumeSlider.getValue(); + System.out.println("Volume: " + volume); + }); + } +} diff --git a/src/main/resources/fxml/MainMenu.fxml b/src/main/resources/fxml/MainMenu.fxml index f7ecaa7b..385eeb92 100644 --- a/src/main/resources/fxml/MainMenu.fxml +++ b/src/main/resources/fxml/MainMenu.fxml @@ -17,6 +17,7 @@ </Button> <Button mnemonicParsing="false" text="Map Creator" VBox.vgrow="ALWAYS" /> <Button mnemonicParsing="false" onAction="#statisticsScene" text="Statistics" VBox.vgrow="ALWAYS" /> + <Button mnemonicParsing="false" onAction="#optionsScene" text="Options" /> <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" /> diff --git a/src/main/resources/fxml/Options.fxml b/src/main/resources/fxml/Options.fxml new file mode 100644 index 00000000..79f14cd6 --- /dev/null +++ b/src/main/resources/fxml/Options.fxml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.Slider?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> +<?import javafx.scene.text.Text?> + + +<VBox fx:id="parent" alignment="CENTER" prefHeight="400.0" prefWidth="600.0" spacing="20.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.OptionsController"> + <children> + <HBox alignment="CENTER"> + <children> + <VBox alignment="TOP_CENTER" spacing="10.0"> + <children> + <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Volume:" /> + <Slider fx:id="volumeSlider" blockIncrement="25.0" majorTickUnit="100.0" minorTickCount="1" prefHeight="14.0" prefWidth="480.0" showTickLabels="true" value="75.0" VBox.vgrow="NEVER" /> + </children> + </VBox> + </children> + </HBox> + <Button mnemonicParsing="false" onAction="#creditScene" text="Credits" /> + <Button mnemonicParsing="false" onAction="#mainMenuScene" text="Back" /> + </children> +</VBox> diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css index 6b84fc00..4841857b 100644 --- a/src/main/resources/styles/style.css +++ b/src/main/resources/styles/style.css @@ -47,3 +47,14 @@ -fx-background-color: -fx-dark-brown; -fx-background-insets: 0; } + +.slider .track { + -fx-background-color: rgba(0, 0, 0, 0.5); + -fx-pref-height: 0.2em; + } + +.slider .thumb { + -fx-pref-height: 0.6em; + -fx-pref-width: 0.4em; + -fx-background-color: -fx-brown; +} -- GitLab