aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui')
-rw-r--r--src/main/java/net/sowgro/npehero/gui/ControlEditor.java38
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/GameOver.java14
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LeaderboardView.java (renamed from src/main/java/net/sowgro/npehero/gui/Leaderboard.java)10
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelDetails.java16
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelSelector.java12
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelSurround.java31
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/MainMenu.java14
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/SettingsEditor.java (renamed from src/main/java/net/sowgro/npehero/gui/Settings.java)26
8 files changed, 76 insertions, 85 deletions
diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
index ecd2fab..b620b17 100644
--- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
+++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java
@@ -1,24 +1,15 @@
package net.sowgro.npehero.gui;
-import javafx.beans.InvalidationListener;
-import javafx.beans.binding.DoubleBinding;
-import javafx.beans.property.Property;
-import javafx.beans.property.ReadOnlyObjectWrapper;
-import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
-import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
-import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
-import javafx.scene.paint.Color;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Control;
-import net.sowgro.npehero.main.SoundController;
-import org.w3c.dom.events.Event;
+import net.sowgro.npehero.main.Sound;
import java.util.List;
import java.util.Map;
@@ -36,15 +27,34 @@ public class ControlEditor extends Pane {
controls.setHgap(40);
- scrollPane.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35));
- scrollPane.setMinWidth(400);
+// Pane dummy1 = new Pane();
+// Pane dummy2 = new Pane();
+// Pane dummy3 = new Pane();
+// controls.add(dummy1, 0, 0);
+// controls.add(dummy2, 1, 0);
+// controls.add(dummy3, 2, 0);
+//
+// Runnable r = () -> {
+// var vpw = scrollPane.getViewportBounds().getWidth();
+// var itemswidth = dummy1.getWidth() + dummy2.getWidth() + dummy3.getWidth();
+// var out = ((vpw - itemswidth) / 2) -10;
+// if (out < 10) {
+// controls.setHgap(10);
+// }
+// else {
+// controls.setHgap(out);
+// }
+// };
+// scrollPane.viewportBoundsProperty().addListener((_, _, _) -> r.run());
+
+ scrollPane.setPrefWidth(700);
scrollPane.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- SoundController.playSfx(SoundController.BACKWARD);
- Driver.setMenu(new Settings());
+ Sound.playSfx(Sound.BACKWARD);
+ Driver.setMenu(new SettingsEditor());
});
VBox centerBox = new VBox();
diff --git a/src/main/java/net/sowgro/npehero/gui/GameOver.java b/src/main/java/net/sowgro/npehero/gui/GameOver.java
index b75ec43..da524dc 100755
--- a/src/main/java/net/sowgro/npehero/gui/GameOver.java
+++ b/src/main/java/net/sowgro/npehero/gui/GameOver.java
@@ -14,7 +14,7 @@ import javafx.scene.text.Text;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Sound;
public class GameOver extends Pane
{
@@ -30,11 +30,11 @@ public class GameOver extends Pane
topText.getStyleClass().add("t11");
Text levelName = new Text();
- levelName.setText(level.getTitle());
+ levelName.setText(level.title);
levelName.getStyleClass().add("t2");
Text levelArtist = new Text();
- levelArtist.setText(level.getArtist()+" - "+diff.title);
+ levelArtist.setText(level.artist+" - "+diff.title);
levelArtist.getStyleClass().add("t3");
VBox levelDetailsBox = new VBox();
@@ -72,10 +72,10 @@ public class GameOver extends Pane
save.setOnAction(new EventHandler<ActionEvent>() { //this is the same as the "e ->" thing but it allows more than one line to be added
@Override
public void handle(ActionEvent event) {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
save.setDisable(true);
name.setDisable(true);
- diff.addToLeaderboard(name.getText(), score2);
+ diff.leaderboard.add(name.getText(), score2);
}
});
@@ -93,14 +93,14 @@ public class GameOver extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- SoundController.playSfx(SoundController.BACKWARD);
+ Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(lastMenu);
});
Button replay = new Button();
replay.setText("Replay");
replay.setOnAction(e -> {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
Driver.setMenu(new LevelSurround(level, diff, lastMenu));
});
diff --git a/src/main/java/net/sowgro/npehero/gui/Leaderboard.java b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
index 842e46d..4741823 100755
--- a/src/main/java/net/sowgro/npehero/gui/Leaderboard.java
+++ b/src/main/java/net/sowgro/npehero/gui/LeaderboardView.java
@@ -13,16 +13,16 @@ import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.LeaderboardEntry;
import net.sowgro.npehero.main.Level;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Sound;
-public class Leaderboard extends Pane
+public class LeaderboardView 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 Leaderboard(Level level, Difficulty diff, Pane prev)
+ public LeaderboardView(Level level, Difficulty diff, Pane prev)
{
//sets up table view: requires java bean getters, setters and constructors to work
TableView<LeaderboardEntry> scores = new TableView<LeaderboardEntry>();
@@ -39,7 +39,7 @@ public class Leaderboard extends Pane
scoreCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getScore() + ""));
dateCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getDate()));
- scores.setItems(diff.getLeaderboard());
+ scores.setItems(diff.leaderboard.entries);
scores.getStyleClass().add("unselectable");
@@ -52,7 +52,7 @@ public class Leaderboard extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- SoundController.playSfx(SoundController.BACKWARD);
+ Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(prev);
});
diff --git a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
index e5b6bdc..df5529e 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
@@ -17,7 +17,7 @@ import javafx.scene.text.TextFlow;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Sound;
public class LevelDetails extends VBox
{
@@ -66,11 +66,11 @@ public class LevelDetails extends VBox
detailsScroll.getStyleClass().remove("scroll-pane");
Text title = new Text();
- title.setText(level.getTitle());
+ title.setText(level.title);
title.getStyleClass().add("t1");
Text artist = new Text();
- artist.setText(level.getArtist());
+ artist.setText(level.artist);
artist.getStyleClass().add("t2");
Text desc = new Text();
@@ -86,26 +86,26 @@ public class LevelDetails extends VBox
FlowPane diffSelector = new FlowPane();
diffSelector.setAlignment(Pos.CENTER);
ToggleGroup diffToggleGroup = new ToggleGroup(); //allows only one to be selected at a time
- for (Difficulty diff : level.getValidDiffList()) //adds a button for each diff
+ for (Difficulty diff : level.difficulties.validList) //adds a button for each diff
{
RadioButton temp = new RadioButton();
temp.getStyleClass().remove("radio-button"); //makes the buttons not look like a radio button and instead a normal button
temp.getStyleClass().add("button");
temp.setText(diff.title);
- temp.setUserData(diff); //allows the data and text to be seperate
+ temp.setUserData(diff); //allows the data and text to be separate
diffToggleGroup.getToggles().add(temp);
diffSelector.getChildren().add(temp);
}
play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); //disables play button when no difficulty is selected
play.setOnAction(e -> {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
});
leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
leaderboard.setOnAction(e -> {
- SoundController.playSfx(SoundController.FORWARD);
- Driver.setMenu(new Leaderboard(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
+ Sound.playSfx(Sound.FORWARD);
+ Driver.setMenu(new LeaderboardView(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
});
diff --git a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
index eb31754..3553267 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
@@ -10,8 +10,8 @@ import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Level;
-import net.sowgro.npehero.main.LevelController;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Levels;
+import net.sowgro.npehero.main.Sound;
public class LevelSelector extends Pane
{
@@ -31,10 +31,10 @@ public class LevelSelector extends Pane
levels.getColumns().add(titleCol);
levels.getColumns().add(artistCol);
- titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getTitle()));
- artistCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getArtist()));
+ titleCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().title));
+ artistCol.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().artist));
- levels.setItems(LevelController.getValidLevelList());
+ levels.setItems(Levels.validList);
levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25));
levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75));
@@ -45,7 +45,7 @@ public class LevelSelector extends Pane
exit.setText("Back");
exit.setOnAction(e -> {
Driver.setMenu(new MainMenu());
- SoundController.playSfx(SoundController.BACKWARD);
+ Sound.playSfx(Sound.BACKWARD);
});
VBox leftBox = new VBox();
diff --git a/src/main/java/net/sowgro/npehero/gui/LevelSurround.java b/src/main/java/net/sowgro/npehero/gui/LevelSurround.java
index aca93bc..b864c08 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelSurround.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelSurround.java
@@ -13,8 +13,8 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
-import net.sowgro.npehero.main.ScoreController;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.gameplay.ScoreController;
+import net.sowgro.npehero.main.Sound;
public class LevelSurround extends Pane
{
@@ -32,7 +32,7 @@ public class LevelSurround extends Pane
exit.setText("Back");
exit.setOnAction(e -> {
Driver.setMenu(prev);
- SoundController.playSfx(SoundController.BACKWARD);
+ Sound.playSfx(Sound.BACKWARD);
game.cancel();
});
@@ -42,11 +42,11 @@ public class LevelSurround extends Pane
buttonBox.setSpacing(10);
Text title = new Text();
- title.setText(level.getTitle());
+ title.setText(level.title);
title.getStyleClass().add("t2");
Text artist = new Text();
- artist.setText(level.getArtist()+" - "+difficulty.title);
+ artist.setText(level.artist+" - "+difficulty.title);
artist.getStyleClass().add("t3");
VBox titleTextBox = new VBox();
@@ -125,27 +125,6 @@ public class LevelSurround extends Pane
root.prefWidthProperty().bind(super.prefWidthProperty());
root.prefHeightProperty().bind(super.prefHeightProperty());
- //for debug menu
- Button addScore = new Button();
- addScore.setText(level.getTitle() + " addscore");
- addScore.setOnAction(e -> sc.setScore(sc.getScore()+1));
-// Driver.debug.addButton(addScore);
-
- Button addCombo = new Button();
- addCombo.setText(level.getTitle() + " addcombo");
- addCombo.setOnAction(e -> sc.setCombo(sc.getCombo()+1));
-// Driver.debug.addButton(addCombo);
-
- Button printD = new Button();
- printD.setText(level.getTitle() + " print debug");
- printD.setOnAction(e -> sc.print());
-// Driver.debug.addButton(printD);
-
- Button testfinish = new Button();
- testfinish.setText(level.getTitle() + "launch game end");
- testfinish.setOnAction(e -> Driver.setMenu(new GameOver(level, difficulty, prev, sc.getScore())));
-// Driver.debug.addButton(testfinish);
-
game.start();
}
} \ No newline at end of file
diff --git a/src/main/java/net/sowgro/npehero/gui/MainMenu.java b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
index 2b1d2ac..2587f41 100755
--- a/src/main/java/net/sowgro/npehero/gui/MainMenu.java
+++ b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
@@ -1,7 +1,5 @@
package net.sowgro.npehero.gui;
-import javafx.application.Application;
-import javafx.application.Platform;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.effect.BlurType;
@@ -12,7 +10,7 @@ import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.devmenu.LevelList;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Sound;
public class MainMenu extends Pane
@@ -38,26 +36,26 @@ public class MainMenu extends Pane
play.setText("Play");
play.setOnAction(e -> {
Driver.setMenu(new LevelSelector());
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
});
Button settings = new Button();
settings.setText("Settings");
settings.setOnAction(_ -> {
- Driver.setMenu(new Settings());
- SoundController.playSfx(SoundController.FORWARD);
+ Driver.setMenu(new SettingsEditor());
+ Sound.playSfx(Sound.FORWARD);
});
Button levelEdit = new Button("Level Editor");
levelEdit.setOnAction(e -> {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
Driver.setMenu(new LevelList());
});
Button exit = new Button();
exit.setText("Quit");
exit.setOnAction(e -> {
- SoundController.playSfx(SoundController.BACKWARD);
+ Sound.playSfx(Sound.BACKWARD);
// Driver.quit();
// Platform.exit();
System.exit(0);
diff --git a/src/main/java/net/sowgro/npehero/gui/Settings.java b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java
index cc6815c..4dcd3dc 100755
--- a/src/main/java/net/sowgro/npehero/gui/Settings.java
+++ b/src/main/java/net/sowgro/npehero/gui/SettingsEditor.java
@@ -3,6 +3,7 @@ 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;
@@ -10,29 +11,32 @@ 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.SettingsController;
-import net.sowgro.npehero.main.SoundController;
+import net.sowgro.npehero.main.Settings;
+import net.sowgro.npehero.main.Sound;
-public class Settings extends Pane
+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 Settings()
+ public SettingsEditor()
{
Text musicText = new Text();
musicText.setText("Music Volume");
musicText.getStyleClass().add("t3");
Slider musicSlider = new Slider();
- musicSlider.valueProperty().bindBidirectional(SettingsController.musicVol);
+ 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);
+ musicBox.getChildren().addAll(musicText, musicSlider, enableMenuMusic);
musicBox.getStyleClass().add("box");
musicBox.setPadding(new Insets(10));
@@ -42,7 +46,7 @@ public class Settings extends Pane
SFXText.getStyleClass().add("t3");
Slider SFXSlider = new Slider();
- SFXSlider.valueProperty().bindBidirectional(SettingsController.effectsVol);
+ SFXSlider.valueProperty().bindBidirectional(Settings.effectsVol);
SFXSlider.setMin(0.0);
SFXSlider.setMax(1.0);
@@ -59,7 +63,7 @@ public class Settings extends Pane
Button fullscreen = new Button();
fullscreen.setText("Toggle (F11)");
fullscreen.setOnAction(e -> {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen());
});
@@ -75,7 +79,7 @@ public class Settings extends Pane
Button controlsButton = new Button();
controlsButton.setText("Edit");
controlsButton.setOnAction(_ -> {
- SoundController.playSfx(SoundController.FORWARD);
+ Sound.playSfx(Sound.FORWARD);
Driver.setMenu(new ControlEditor());
});
@@ -87,8 +91,8 @@ public class Settings extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- SettingsController.write();
- SoundController.playSfx(SoundController.BACKWARD);
+ Settings.save();
+ Sound.playSfx(Sound.BACKWARD);
Driver.setMenu(new MainMenu());
});