aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/gui/Settings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui/Settings.java')
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/Settings.java131
1 files changed, 131 insertions, 0 deletions
diff --git a/src/main/java/net/sowgro/npehero/gui/Settings.java b/src/main/java/net/sowgro/npehero/gui/Settings.java
new file mode 100755
index 0000000..882eb86
--- /dev/null
+++ b/src/main/java/net/sowgro/npehero/gui/Settings.java
@@ -0,0 +1,131 @@
+package net.sowgro.npehero.gui;
+
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.control.Button;
+import javafx.scene.control.Slider;
+import javafx.scene.control.ToggleButton;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+import javafx.scene.text.Text;
+import net.sowgro.npehero.Driver;
+import net.sowgro.npehero.devmenu.LevelList;
+
+public class Settings extends Pane
+{
+ /*
+ * this class is a layout class, most of its purpose is to place UI elements like Buttons within Panes like VBoxes.
+ * the creation of these UI elements are mostly not commented due to their repetitive and self explanatory nature.
+ * style classes are defined in the style.css file.
+ */
+ public Settings()
+ {
+ Text musicText = new Text();
+ musicText.setText("Music Volume");
+ musicText.getStyleClass().add("t3");
+
+ Slider musicSlider = new Slider();
+ musicSlider.valueProperty().bindBidirectional(Driver.settingsController.musicVol);
+ musicSlider.setMin(0.0);
+ musicSlider.setMax(1.0);
+
+ VBox musicBox = new VBox();
+ musicBox.getChildren().addAll(musicText, musicSlider);
+ musicBox.getStyleClass().add("box");
+ musicBox.setPadding(new Insets(10));
+
+
+ Text SFXText = new Text();
+ SFXText.setText("Sound Effects Volume");
+ SFXText.getStyleClass().add("t3");
+
+ Slider SFXSlider = new Slider();
+ SFXSlider.valueProperty().bindBidirectional(Driver.settingsController.effectsVol);
+ SFXSlider.setMin(0.0);
+ SFXSlider.setMax(1.0);
+
+ VBox SFXBox = new VBox();
+ SFXBox.getChildren().addAll(SFXText, SFXSlider);
+ SFXBox.getStyleClass().add("box");
+ SFXBox.setPadding(new Insets(10));
+
+
+ Text fullText = new Text();
+ fullText.setText("Fullscreen mode");
+ fullText.getStyleClass().add("t3");
+
+ Button fullscreen = new Button();
+ fullscreen.setText("Toggle (F11)");
+ fullscreen.getStyleClass().remove("toggle-button");
+ fullscreen.getStyleClass().add("button");
+ fullscreen.setOnAction(e -> {
+ Driver.soundController.playSfx("forward");
+ Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen());
+ });
+
+ VBox fullBox = new VBox();
+ fullBox.getChildren().addAll(fullText,fullscreen);
+ fullBox.getStyleClass().add("box");
+ fullBox.setPadding(new Insets(10));
+
+
+ Text devLabel = new Text("Advanced");
+ devLabel.getStyleClass().add("t3");
+
+ Button levelEdit = new Button("Level Utility");
+ levelEdit.setOnAction(e -> {
+ Driver.soundController.playSfx("forward");
+ new LevelList();
+ });
+
+ Button devMenu = new Button();
+ devMenu.setText("Debug Menu");
+ devMenu.setOnAction(e -> {
+ Driver.soundController.playSfx("forward");
+// Driver.debug.show();
+ });
+
+ VBox devBox = new VBox();
+ devBox.getStyleClass().add("box");
+ devBox.getChildren().addAll(devLabel,levelEdit,devMenu);
+ devBox.setVisible(false);
+ devBox.setManaged(false);
+ devBox.setPadding(new Insets(10));
+
+ ToggleButton advanced = new ToggleButton("Advanced");
+ advanced.getStyleClass().remove("toggle-button");
+ advanced.getStyleClass().add("button");
+ advanced.selectedProperty().bindBidirectional(devBox.managedProperty());
+ advanced.selectedProperty().bindBidirectional(devBox.visibleProperty());
+
+ Button exit = new Button();
+ exit.setText("Back");
+ exit.setOnAction(e -> {
+ Driver.settingsController.write();
+ Driver.soundController.playSfx("backward");
+ Driver.setMenu(new MainMenu());
+ });
+
+ BorderPane buttonBox = new BorderPane();
+ buttonBox.setLeft(exit);
+ buttonBox.setRight(advanced);
+
+
+ VBox options = new VBox();
+ options.setSpacing(10);
+ options.setAlignment(Pos.CENTER);
+ options.getChildren().addAll(musicBox,SFXBox,fullBox,devBox,buttonBox);
+ options.maxWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
+ options.setMinWidth(400);
+ options.prefHeightProperty().bind(super.prefHeightProperty());
+
+ HBox rootBox = new HBox();
+ rootBox.prefWidthProperty().bind(super.prefWidthProperty());
+ rootBox.prefHeightProperty().bind(super.prefHeightProperty());
+ rootBox.getChildren().add(options);
+ rootBox.setAlignment(Pos.CENTER);
+ super.getChildren().add(rootBox);
+ }
+}