blob: 882eb8657cc344a5866f560bbd79d68cd6efe2e7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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);
}
}
|