diff options
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui/SettingsEditor.java')
-rwxr-xr-x | src/main/java/net/sowgro/npehero/gui/SettingsEditor.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java new file mode 100755 index 0000000..4dcd3dc --- /dev/null +++ b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java @@ -0,0 +1,118 @@ +package net.sowgro.npehero.gui; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Slider; +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.main.Settings; +import net.sowgro.npehero.main.Sound; + +public class SettingsEditor 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 SettingsEditor() + { + Text musicText = new Text(); + musicText.setText("Music Volume"); + musicText.getStyleClass().add("t3"); + + Slider musicSlider = new Slider(); + musicSlider.valueProperty().bindBidirectional(Settings.musicVol); + musicSlider.setMin(0.0); + musicSlider.setMax(1.0); + + CheckBox enableMenuMusic = new CheckBox("Enable Menu Music"); + enableMenuMusic.selectedProperty().bindBidirectional(Settings.enableMenuMusic); + + VBox musicBox = new VBox(); + musicBox.getChildren().addAll(musicText, musicSlider, enableMenuMusic); + 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(Settings.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.setOnAction(e -> { + Sound.playSfx(Sound.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 controlsLabel = new Text("Key Bindings"); + controlsLabel.getStyleClass().add("t3"); + + Button controlsButton = new Button(); + controlsButton.setText("Edit"); + controlsButton.setOnAction(_ -> { + Sound.playSfx(Sound.FORWARD); + Driver.setMenu(new ControlEditor()); + }); + + VBox controlsBox = new VBox(); + controlsBox.getStyleClass().add("box"); + controlsBox.getChildren().addAll(controlsLabel, controlsButton); + controlsBox.setPadding(new Insets(10)); + + Button exit = new Button(); + exit.setText("Back"); + exit.setOnAction(e -> { + Settings.save(); + Sound.playSfx(Sound.BACKWARD); + Driver.setMenu(new MainMenu()); + }); + + BorderPane buttonBox = new BorderPane(); + buttonBox.setLeft(exit); + + VBox options = new VBox(); + options.setSpacing(10); + options.setAlignment(Pos.CENTER); + options.getChildren().addAll(musicBox,SFXBox,fullBox,controlsBox,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); + } +} + |