aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xREADME.md12
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/Driver.java31
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/DiffEditor.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/DiffList.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/LevelEditor.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/LevelList.java9
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/devmenu/NotesEditor.java8
-rw-r--r--src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java17
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gameplay/SongPlayer.java13
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/GameOver.java7
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/Leaderboard.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelDetails.java5
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelSelector.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/LevelSurround.java3
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/MainMenu.java15
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/gui/Settings.java14
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/main/LevelController.java16
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/main/ScoreController.java4
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/main/SettingsController.java17
-rwxr-xr-xsrc/main/java/net/sowgro/npehero/main/SoundController.java70
20 files changed, 114 insertions, 142 deletions
diff --git a/README.md b/README.md
index e5c3e5e..97eefe2 100755
--- a/README.md
+++ b/README.md
@@ -1,3 +1,15 @@
+# NPE Hero v2.0
+One-year anniversary update!
+
+Goals:
+- [x] New integrated level editor
+- [ ] Custom keybindings
+- [ ] Installer / Linux package
+- [ ] Code cleanup
+
+### Notes:
+TEMOPORARY: USE G KEY INSTEAD OF SPACE KEY
+
# Installation
1. Install Java 17 or newer
1. Go to Deployments > Releases.
diff --git a/src/main/java/net/sowgro/npehero/Driver.java b/src/main/java/net/sowgro/npehero/Driver.java
index fded71c..6d23390 100755
--- a/src/main/java/net/sowgro/npehero/Driver.java
+++ b/src/main/java/net/sowgro/npehero/Driver.java
@@ -4,6 +4,7 @@ import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Side;
import javafx.scene.Scene;
+import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCombination;
@@ -25,14 +26,8 @@ import java.net.URL;
public class Driver extends Application
{
-
public static Stage primaryStage;
- static Pane primaryPane = new Pane();
-
- public static SettingsController settingsController = new SettingsController();
- public static SoundController soundController = new SoundController();
- public static LevelController levelController = new LevelController();
-// public static DebugMenu debug = new DebugMenu();
+ static ScrollPane primaryPane = new ScrollPane();
/*
* starts javafx
@@ -49,6 +44,9 @@ public class Driver extends Application
@Override
public void start(Stage newPrimaryStage)
{
+ SettingsController.read();
+ LevelController.readData();
+
primaryStage = newPrimaryStage;
Scene primaryScene = new Scene(primaryPane, 800,600);
@@ -58,10 +56,13 @@ public class Driver extends Application
primaryStage.setScene(primaryScene);
primaryStage.setTitle("NPE Hero");
+ primaryPane.getStyleClass().remove("scroll-pane");
setMenu(new MainMenu());
setMenuBackground();
+ SoundController.playSong(SoundController.MENUSONG);
+
primaryStage.addEventHandler(KeyEvent.KEY_PRESSED, event -> { //full screen stuff
if (KeyCode.F11.equals(event.getCode())) {
primaryStage.setFullScreen(!primaryStage.isFullScreen());
@@ -78,11 +79,7 @@ public class Driver extends Application
*/
public static void setMenu(Pane pane)
{
- if (! primaryPane.getChildren().isEmpty())
- {
- primaryPane.getChildren().remove(0);
- }
- primaryPane.getChildren().add(pane);
+ primaryPane.setContent(pane);
pane.prefWidthProperty().bind(primaryPane.widthProperty()); //makes pane fill the window
pane.prefHeightProperty().bind(primaryPane.heightProperty());
primaryPane.requestFocus(); //make the pane itself focused by the keyboard naviagtion so no button is highlighted by default
@@ -92,7 +89,7 @@ public class Driver extends Application
* @return the current pane in primaryPane
*/
public static Pane getMenu(){
- return (Pane) primaryPane.getChildren().get(0);
+ return (Pane) primaryPane.getContent();
}
/**
@@ -115,14 +112,6 @@ public class Driver extends Application
setBackground(new Image(Driver.class.getResource("mountains.png").toExternalForm()));
}
- /**
- * quits the application
- */
- public static void quit()
- {
- Platform.exit();
- }
-
public static URL getResource(String fileName) {
return Driver.class.getResource(fileName);
}
diff --git a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
index 74cfab6..84abf6f 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/DiffEditor.java
@@ -15,6 +15,7 @@ import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Note;
+import net.sowgro.npehero.main.SoundController;
public class DiffEditor extends Pane
{
@@ -102,7 +103,7 @@ public class DiffEditor extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(prev);
});
diff --git a/src/main/java/net/sowgro/npehero/devmenu/DiffList.java b/src/main/java/net/sowgro/npehero/devmenu/DiffList.java
index be4126d..6345c2b 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/DiffList.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/DiffList.java
@@ -11,6 +11,7 @@ import javafx.scene.layout.VBox;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
+import net.sowgro.npehero.main.SoundController;
public class DiffList extends Pane
{
@@ -91,7 +92,7 @@ public class DiffList extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(prev);
});
diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java
index e5ecf1c..411c15d 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/LevelEditor.java
@@ -15,6 +15,7 @@ import javafx.stage.FileChooser.ExtensionFilter;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
+import net.sowgro.npehero.main.SoundController;
public class LevelEditor extends Pane
{
@@ -157,7 +158,7 @@ public class LevelEditor extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(prev);
});
diff --git a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
index e37e2ea..61b9d47 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/LevelList.java
@@ -12,6 +12,7 @@ import javafx.scene.layout.VBox;
import net.sowgro.npehero.gui.MainMenu;
import net.sowgro.npehero.main.Level;
import net.sowgro.npehero.main.LevelController;
+import net.sowgro.npehero.main.SoundController;
public class LevelList extends Pane
{
@@ -60,13 +61,13 @@ public class LevelList extends Pane
edit.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button remove = new Button("Delete");
- remove.setOnAction(e -> Driver.levelController.removeLevel(levels.getSelectionModel().getSelectedItem()));
+ remove.setOnAction(e -> LevelController.removeLevel(levels.getSelectionModel().getSelectedItem()));
remove.setDisable(true);
remove.disableProperty().bind(levels.getSelectionModel().selectedItemProperty().isNull());
Button refresh = new Button("Refresh");
refresh.setOnAction(e -> {
- Driver.levelController.readData();
+ LevelController.readData();
levels.setItems(LevelController.getLevelList());
});
@@ -95,7 +96,7 @@ public class LevelList extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(new MainMenu());
});
@@ -121,7 +122,7 @@ public class LevelList extends Pane
});
newLevelButton.setOnAction(_ -> {
- Driver.levelController.addLevel(newLevelEntry.getText());
+ LevelController.addLevel(newLevelEntry.getText());
newLevelEntry.clear();
refresh.fire();
sidebar.getChildren().clear();
diff --git a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java
index 6f2721e..7e78701 100755
--- a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor.java
@@ -7,6 +7,7 @@ import java.io.UnsupportedEncodingException;
import javafx.geometry.Pos;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
+import javafx.scene.media.Media;
import net.sowgro.npehero.gameplay.Timer;
import net.sowgro.npehero.Driver;
import javafx.scene.Scene;
@@ -15,6 +16,7 @@ import javafx.scene.input.KeyCode;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import net.sowgro.npehero.main.Difficulty;
+import net.sowgro.npehero.main.SoundController;
public class NotesEditor extends Pane
{
@@ -45,7 +47,7 @@ public class NotesEditor extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(prev);
});
@@ -98,7 +100,7 @@ public class NotesEditor extends Pane
private void start()
{
- Driver.soundController.playSong(diff.level.song);
+ SoundController.playSong(new Media(diff.level.song.toString()));
timer = new Timer(diff.bpm);
help.setText(t2);
}
@@ -107,7 +109,7 @@ public class NotesEditor extends Pane
{
try
{
- Driver.soundController.endSong();
+ SoundController.endSong();
diff.numBeats = (int)Double.parseDouble(timer.toString());
timer = null;
writer.close();
diff --git a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java
index fc44339..99aacec 100644
--- a/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java
+++ b/src/main/java/net/sowgro/npehero/devmenu/NotesEditor2.java
@@ -23,6 +23,7 @@ import net.sowgro.npehero.gameplay.Block;
import net.sowgro.npehero.gameplay.Target;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Note;
+import net.sowgro.npehero.main.SoundController;
import java.util.concurrent.atomic.AtomicInteger;
@@ -41,14 +42,15 @@ public class NotesEditor2 extends Pane {
noteList = diff.notes.deepCopyList();
m = new MediaPlayer(new Media(diff.level.song.toURI().toString()));
+ SoundController.endSong();
// Buttons
VBox actionBox = new VBox();
actionBox.setSpacing(10);
- Label noteLabel = new Label("Notes");
+ Label noteLabel = new Label("Notes");
ToggleButton addNote = new ToggleButton("Add");
- Button delNote = new Button("Delete");
+ Button delNote = new Button("Delete");
ToggleButton moveNote = new ToggleButton("Move");
actionBox.getChildren().addAll(noteLabel, addNote, delNote, moveNote);
@@ -79,7 +81,6 @@ public class NotesEditor2 extends Pane {
Block sizer = drawBlock(new Note(0, 0));
for (Pane lane : lanes) {
lane.prefWidthProperty().bind(sizer.widthProperty());
- lane.prefHeightProperty().bind(sizer.heightProperty());
}
Pane rulerLane = new Pane();
Pane playheadLane = new Pane();
@@ -135,16 +136,20 @@ public class NotesEditor2 extends Pane {
Button exit = new Button();
exit.setText("Cancel");
exit.setOnAction(_ -> {
- Driver.soundController.playSfx("backward");
+ m.stop();
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(prev);
+ SoundController.playSong(SoundController.MENUSONG);
});
Button save = new Button();
save.setText("Done");
save.setOnAction(_ -> {
diff.notes.list = noteList;
- Driver.soundController.playSfx("backward");
+ m.stop();
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(new DiffEditor(diff, prev.prev));
+ SoundController.playSong(SoundController.MENUSONG);
});
HBox buttons = new HBox(save, exit);
@@ -153,7 +158,7 @@ public class NotesEditor2 extends Pane {
// Draw notes
noteList.forEach(n -> lanes[n.lane].getChildren().add(drawBlock(n)));
- noteList.addListener((ListChangeListener<? super Note>) e -> {
+ noteList.addListener((ListChangeListener<? super Note>) _ -> {
// TODO
for (Pane lane : lanes) {
lane.getChildren().clear();
diff --git a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
index 41976a9..d4fbbbf 100755
--- a/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
+++ b/src/main/java/net/sowgro/npehero/gameplay/SongPlayer.java
@@ -10,6 +10,7 @@ import java.util.Queue;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
+import javafx.scene.media.Media;
import net.sowgro.npehero.Driver;
import net.sowgro.npehero.gui.GameOver;
import javafx.geometry.Pos;
@@ -25,7 +26,7 @@ import javafx.util.*;
import net.sowgro.npehero.main.Difficulty;
import net.sowgro.npehero.main.Level;
import net.sowgro.npehero.main.ScoreController;
-
+import net.sowgro.npehero.main.SoundController;
//hi aidan here are some objects you can use
@@ -98,7 +99,7 @@ public class SongPlayer extends Pane {
}
public SongPlayer(Level lvl, Difficulty d, Pane p, ScoreController cntrl) {
- Driver.soundController.endSong();
+ SoundController.endSong();
song = lvl.song;
if (lvl.background != null) {
@@ -146,7 +147,7 @@ public class SongPlayer extends Pane {
if (e.getCode() == KeyCode.F) {
checkNote(fLane, fButton);
}
- if (e.getCode() == KeyCode.SPACE) {
+ if (e.getCode() == KeyCode.G) {
checkNote(spaceLane, sButton);
}
if (e.getCode() == KeyCode.J) {
@@ -252,7 +253,7 @@ public class SongPlayer extends Pane {
}
if (!songIsPlaying && timer.time() > 0.0) {
songIsPlaying = true;
- Driver.soundController.playSong(song);
+ SoundController.playSong(new Media(song.toURI().toString()));
}
}
};
@@ -271,8 +272,8 @@ public class SongPlayer extends Pane {
*/
public void cancel() {
missMute = true;
- Driver.soundController.endSong();
- Driver.soundController.playMenuSong();
+ SoundController.endSong();
+ SoundController.playSong(SoundController.MENUSONG);
Driver.setMenuBackground();
gameLoop.stop();
}
diff --git a/src/main/java/net/sowgro/npehero/gui/GameOver.java b/src/main/java/net/sowgro/npehero/gui/GameOver.java
index 99f3985..b75ec43 100755
--- a/src/main/java/net/sowgro/npehero/gui/GameOver.java
+++ b/src/main/java/net/sowgro/npehero/gui/GameOver.java
@@ -14,6 +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;
public class GameOver extends Pane
{
@@ -71,7 +72,7 @@ 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) {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
save.setDisable(true);
name.setDisable(true);
diff.addToLeaderboard(name.getText(), score2);
@@ -92,14 +93,14 @@ public class GameOver extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(lastMenu);
});
Button replay = new Button();
replay.setText("Replay");
replay.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.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/Leaderboard.java
index a8e54d1..842e46d 100755
--- a/src/main/java/net/sowgro/npehero/gui/Leaderboard.java
+++ b/src/main/java/net/sowgro/npehero/gui/Leaderboard.java
@@ -13,6 +13,7 @@ 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;
public class Leaderboard extends Pane
{
@@ -51,7 +52,7 @@ public class Leaderboard extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.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 25d96c8..e5b6bdc 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelDetails.java
@@ -17,6 +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;
public class LevelDetails extends VBox
{
@@ -97,13 +98,13 @@ public class LevelDetails extends VBox
}
play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); //disables play button when no difficulty is selected
play.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
});
leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
leaderboard.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
Driver.setMenu(new Leaderboard(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 fe51853..eb31754 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelSelector.java
@@ -11,6 +11,7 @@ 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;
public class LevelSelector extends Pane
{
@@ -44,7 +45,7 @@ public class LevelSelector extends Pane
exit.setText("Back");
exit.setOnAction(e -> {
Driver.setMenu(new MainMenu());
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.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 08baf9e..aca93bc 100755
--- a/src/main/java/net/sowgro/npehero/gui/LevelSurround.java
+++ b/src/main/java/net/sowgro/npehero/gui/LevelSurround.java
@@ -14,6 +14,7 @@ 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;
public class LevelSurround extends Pane
{
@@ -31,7 +32,7 @@ public class LevelSurround extends Pane
exit.setText("Back");
exit.setOnAction(e -> {
Driver.setMenu(prev);
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
game.cancel();
});
diff --git a/src/main/java/net/sowgro/npehero/gui/MainMenu.java b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
index 890c7aa..2b1d2ac 100755
--- a/src/main/java/net/sowgro/npehero/gui/MainMenu.java
+++ b/src/main/java/net/sowgro/npehero/gui/MainMenu.java
@@ -1,5 +1,7 @@
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;
@@ -10,6 +12,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;
public class MainMenu extends Pane
@@ -35,27 +38,29 @@ public class MainMenu extends Pane
play.setText("Play");
play.setOnAction(e -> {
Driver.setMenu(new LevelSelector());
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
});
Button settings = new Button();
settings.setText("Settings");
settings.setOnAction(_ -> {
Driver.setMenu(new Settings());
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
});
Button levelEdit = new Button("Level Editor");
levelEdit.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
Driver.setMenu(new LevelList());
});
Button exit = new Button();
exit.setText("Quit");
exit.setOnAction(e -> {
- Driver.quit();
- Driver.soundController.playSfx("backward");
+ SoundController.playSfx(SoundController.BACKWARD);
+// Driver.quit();
+// Platform.exit();
+ System.exit(0);
});
VBox buttonBox = new VBox();
diff --git a/src/main/java/net/sowgro/npehero/gui/Settings.java b/src/main/java/net/sowgro/npehero/gui/Settings.java
index 1e92906..8d345a0 100755
--- a/src/main/java/net/sowgro/npehero/gui/Settings.java
+++ b/src/main/java/net/sowgro/npehero/gui/Settings.java
@@ -11,6 +11,8 @@ 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;
public class Settings extends Pane
{
@@ -26,7 +28,7 @@ public class Settings extends Pane
musicText.getStyleClass().add("t3");
Slider musicSlider = new Slider();
- musicSlider.valueProperty().bindBidirectional(Driver.settingsController.musicVol);
+ musicSlider.valueProperty().bindBidirectional(SettingsController.musicVol);
musicSlider.setMin(0.0);
musicSlider.setMax(1.0);
@@ -41,7 +43,7 @@ public class Settings extends Pane
SFXText.getStyleClass().add("t3");
Slider SFXSlider = new Slider();
- SFXSlider.valueProperty().bindBidirectional(Driver.settingsController.effectsVol);
+ SFXSlider.valueProperty().bindBidirectional(SettingsController.effectsVol);
SFXSlider.setMin(0.0);
SFXSlider.setMax(1.0);
@@ -58,7 +60,7 @@ public class Settings extends Pane
Button fullscreen = new Button();
fullscreen.setText("Toggle (F11)");
fullscreen.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen());
});
@@ -74,7 +76,7 @@ public class Settings extends Pane
Button devMenu = new Button();
devMenu.setText("Debug Menu");
devMenu.setOnAction(e -> {
- Driver.soundController.playSfx("forward");
+ SoundController.playSfx(SoundController.FORWARD);
// Driver.debug.show();
});
@@ -92,8 +94,8 @@ public class Settings extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.settingsController.write();
- Driver.soundController.playSfx("backward");
+ SettingsController.write();
+ SoundController.playSfx(SoundController.BACKWARD);
Driver.setMenu(new MainMenu());
});
diff --git a/src/main/java/net/sowgro/npehero/main/LevelController.java b/src/main/java/net/sowgro/npehero/main/LevelController.java
index 68d7450..8205716 100755
--- a/src/main/java/net/sowgro/npehero/main/LevelController.java
+++ b/src/main/java/net/sowgro/npehero/main/LevelController.java
@@ -11,22 +11,14 @@ import javafx.collections.ObservableList;
public class LevelController
{
- File thisDir = new File("levels");
+ private static File thisDir = new File("levels");
private static ObservableList<Level> levelList;
private static ObservableList<Level> validLevelList;
/**
- * Creates a levelController, which holds all the levels
- */
- public LevelController()
- {
- readData();
- }
-
- /**
* Reads contents of folder and creates cooresponding levels
*/
- public void readData()
+ public static void readData()
{
levelList = FXCollections.observableArrayList();
validLevelList = FXCollections.observableArrayList();
@@ -46,7 +38,7 @@ public class LevelController
* Adds a level to the list by creating a directory and required files
* @param text: the name of the directory and default title
*/
- public void addLevel(String text)
+ public static void addLevel(String text)
{
File levelDir = new File(thisDir,text);
levelDir.mkdirs();
@@ -69,7 +61,7 @@ public class LevelController
* Removes level from the filesystem then reloads this levelController
* @param level: the level to be removed
*/
- public void removeLevel(Level level)
+ public static void removeLevel(Level level)
{
File hold = level.thisDir;
levelList.remove(level);
diff --git a/src/main/java/net/sowgro/npehero/main/ScoreController.java b/src/main/java/net/sowgro/npehero/main/ScoreController.java
index ba43171..205201c 100755
--- a/src/main/java/net/sowgro/npehero/main/ScoreController.java
+++ b/src/main/java/net/sowgro/npehero/main/ScoreController.java
@@ -39,7 +39,7 @@ public class ScoreController{
*/
public void miss(boolean muted) {
if (!muted) {
- Driver.soundController.playSfx("miss");
+ SoundController.playSfx(SoundController.MISS);
}
combo = 0;
comboMultiplier = 1;
@@ -52,7 +52,7 @@ public class ScoreController{
* Increments the combo by one
*/
private void combo() {
- Driver.soundController.playSfx("hit");
+ SoundController.playSfx(SoundController.HIT);
combo++;
if (combo == 2) {
diff --git a/src/main/java/net/sowgro/npehero/main/SettingsController.java b/src/main/java/net/sowgro/npehero/main/SettingsController.java
index d5f3e3b..5ea0ac9 100755
--- a/src/main/java/net/sowgro/npehero/main/SettingsController.java
+++ b/src/main/java/net/sowgro/npehero/main/SettingsController.java
@@ -8,21 +8,16 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import javafx.beans.property.SimpleDoubleProperty;
-public class SettingsController
+public class SettingsController
{
- public SimpleDoubleProperty effectsVol = new SimpleDoubleProperty(1);
- public SimpleDoubleProperty musicVol = new SimpleDoubleProperty(1);
- private File file = new File("settings.json");
+ public static SimpleDoubleProperty effectsVol = new SimpleDoubleProperty(1);
+ public static SimpleDoubleProperty musicVol = new SimpleDoubleProperty(1);
+ private static File file = new File("settings.json");
- public SettingsController()
- {
- read();
- }
-
/**
* reads json data from settings.json
*/
- public void read()
+ public static void read()
{
JSONParser jsonParser = new JSONParser(); //parser to read the file
try(FileReader reader = new FileReader(file))
@@ -43,7 +38,7 @@ public class SettingsController
/**
* writes json data to settings.json
*/
- public void write()
+ public static void write()
{
FileWriter fileWriter;
try
diff --git a/src/main/java/net/sowgro/npehero/main/SoundController.java b/src/main/java/net/sowgro/npehero/main/SoundController.java
index da80ab4..e27221e 100755
--- a/src/main/java/net/sowgro/npehero/main/SoundController.java
+++ b/src/main/java/net/sowgro/npehero/main/SoundController.java
@@ -1,81 +1,43 @@
package net.sowgro.npehero.main;
import java.io.File;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.HashMap;
+import javafx.scene.media.AudioClip;
import net.sowgro.npehero.Driver;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
-import javafx.util.Duration;
public class SoundController
{
- public MediaPlayer songMediaPlayer;
- public MediaPlayer sfxMediaPlayer;
- private final HashMap<String,MediaPlayer> effects = new HashMap<>();
- private final File mainMenuSong;
-
- {
- try {
- mainMenuSong = new File(Driver.getResource("fairyfountain.wav").toURI());
- } catch (URISyntaxException e) {
- throw new RuntimeException(e);
- }
- }
+ public static MediaPlayer songMediaPlayer;
+ public static final Media MENUSONG = new Media(Driver.getResource("fairyfountain.wav").toString());
- /**
- * creates a new sound controller and starts playing the main menu music
- */
- public SoundController()
- {
- effects.put("hit", new MediaPlayer(new Media(Driver.getResource("hit.wav").toString())));
- effects.put("miss", new MediaPlayer(new Media(Driver.getResource("miss.wav").toString())));
- effects.put("forward", new MediaPlayer(new Media(Driver.getResource("forward.wav").toString())));
- effects.put("backward", new MediaPlayer(new Media(Driver.getResource("backward.wav").toString())));
- effects.forEach((key,value) -> {
- value.volumeProperty().bind(Driver.settingsController.effectsVol);
- });
- playMenuSong();
- }
+ public static final AudioClip HIT = new AudioClip(Driver.getResource("hit.wav").toString());
+ public static final AudioClip MISS = new AudioClip(Driver.getResource("miss.wav").toString());
+ public static final AudioClip FORWARD = new AudioClip(Driver.getResource("forward.wav").toString());
+ public static final AudioClip BACKWARD = new AudioClip(Driver.getResource("backward.wav").toString());
/**
* plays the song that is passed in.
- * @param songFile: the song
+ * @param song the song to play
*/
- public void playSong(File songFile)
+ public static void playSong(Media song)
{
if (songMediaPlayer != null)
{
songMediaPlayer.stop();
}
- Media song = new Media(songFile.toURI().toString());
songMediaPlayer = new MediaPlayer(song);
- songMediaPlayer.volumeProperty().bind(Driver.settingsController.musicVol);
- songMediaPlayer.play();
- }
-
- /**
- * plays the main menu song
- */
- public void playMenuSong()
- {
- if (!mainMenuSong.exists()) {
- System.out.println("NOT EXIST " + mainMenuSong.getAbsolutePath());
- return;
- }
- playSong(mainMenuSong);
- songMediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
+ songMediaPlayer.volumeProperty().bind(SettingsController.musicVol);
songMediaPlayer.play();
}
/**
* stops the currently playing song
*/
- public void endSong()
+ public static void endSong()
{
if (songMediaPlayer != null)
{
@@ -85,13 +47,11 @@ public class SoundController
/**
* plays a sound effect
- * for the volume slider to take effect each mediaplayer needs to be preloaded.
- * this rewinds and played the proper mediaplayer for the sound
- * @param preset: a string of the name of the sound. possible sounds assigned in the constructor
+ * @param clip the sound to play
*/
- public void playSfx(String preset)
+ public static void playSfx(AudioClip clip)
{
- effects.get(preset).seek(new Duration(0));
- effects.get(preset).play();
+ clip.volumeProperty().bind(SettingsController.effectsVol);
+ clip.play();
}
} \ No newline at end of file