diff options
20 files changed, 114 insertions, 142 deletions
@@ -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 |