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 524d9482cd23d1076e7118f43c59882f50dbc324..cc1eebcb28f70769a98491794f4bdb7a144f5ce5 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 4b1018783bbf57e9f9a763387e92b21b929b20c8..d742f93183a9488068fde465073c5a47eefcdebf 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 0000000000000000000000000000000000000000..413e4ee7dc52c8a8ccaefa8632bb5078521c4a79 --- /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 f7ecaa7bb0e9a531363f6b1e9e771f27b2bec549..385eeb92c0ed4cce0d84e17363a2007d4a6c648b 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 0000000000000000000000000000000000000000..79f14cd61fc942bff138bc3a22443bdf8f9ef2a0 --- /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 6b84fc002425a9939bd87a2d5f17ad09f3e1ec81..4841857be68584111ca0e31c4d4b02f1dbd1eb9d 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; +}