From 727e5c5efcc48642e2c8b24dcd052bca36e74587 Mon Sep 17 00:00:00 2001 From: Aidan Ross Date: Sat, 3 Jun 2023 00:01:56 -0400 Subject: SYNCING ISSUES COMPLETELY FIXED and theres not even any workarounds this time it just works also songs now start on beat zero in the notes.txt file --- levels/testLevel2/easy/leaderboard.json | 2 +- levels/testLevel2/easy/metadata.json | 2 +- levels/testLevel2/easy/notes.txt | 26 ++++++++++++++++++++++++++ src/gameplay/SongPlayer.java | 25 ++++++++++++++++--------- src/gameplay/Timer.java | 4 ++-- src/gui/Driver.java | 17 ++++++++--------- 6 files changed, 54 insertions(+), 22 deletions(-) diff --git a/levels/testLevel2/easy/leaderboard.json b/levels/testLevel2/easy/leaderboard.json index 0637a08..3daf19a 100644 --- a/levels/testLevel2/easy/leaderboard.json +++ b/levels/testLevel2/easy/leaderboard.json @@ -1 +1 @@ -[] \ No newline at end of file +[{"date":"2023-06-02","score":17900,"name":"zbone"}] \ No newline at end of file diff --git a/levels/testLevel2/easy/metadata.json b/levels/testLevel2/easy/metadata.json index 2d3f754..c76ea5b 100644 --- a/levels/testLevel2/easy/metadata.json +++ b/levels/testLevel2/easy/metadata.json @@ -1 +1 @@ -{"numBeats":0,"title":"Easy","bpm":0} \ No newline at end of file +{"numBeats":28,"title":"Easy","bpm":85.0} \ No newline at end of file diff --git a/levels/testLevel2/easy/notes.txt b/levels/testLevel2/easy/notes.txt index e69de29..69e58d5 100644 --- a/levels/testLevel2/easy/notes.txt +++ b/levels/testLevel2/easy/notes.txt @@ -0,0 +1,26 @@ +s0.00 +d1.00 +d2.00 +f3.00 +s4.00 +j5.00 +k6.00 +j7.00 +f8.00 +d9.00 +f10.00 +s11.00 +j12.00 +k13.00 +j14.00 +s15.00 +f16.00 +d17.00 +f18.00 +s19.00 +j20.00 +k21.00 +j22.00 +s23.00 +f24.00 +d25.00 diff --git a/src/gameplay/SongPlayer.java b/src/gameplay/SongPlayer.java index 9010228..983ba9c 100644 --- a/src/gameplay/SongPlayer.java +++ b/src/gameplay/SongPlayer.java @@ -3,6 +3,7 @@ package gameplay; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; @@ -18,6 +19,9 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; +import javafx.scene.media.MediaView; import javafx.scene.paint.Color; import javafx.animation.*; import javafx.util.*; @@ -110,13 +114,11 @@ public class SongPlayer extends Pane { } public SongPlayer(main.Level lvl, Difficulty d, Pane p, ScoreController cntrl) { - try { - gui.Driver.mediaPlayer.stop(); - } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { - e.printStackTrace(); - } - gui.Driver.mediaPlayer = new AudioFilePlayer(lvl.song.getPath()); - gui.Driver.mediaPlayer.play(); + gui.Driver.mediaPlayer.stop(); + Media song = new Media(Paths.get(lvl.song.getPath()).toUri().toString()); + gui.Driver.mediaPlayer = new MediaPlayer(song); + new MediaView(gui.Driver.mediaPlayer); + bpm = d.bpm; //Reads the song's bpm from a metadata file level = lvl; @@ -196,7 +198,7 @@ public class SongPlayer extends Pane { * @param c the color of the sent note */ public void sendNote(Queue sends, ArrayList lane, TButton button) { - if (sends.peek() != null && timer.time() > sends.peek().getTime()-(TIME*bpm/60000)) { + if (sends.peek() != null && timer.time() > sends.peek().getTime()-(1000*(bpm/60000.0))) { TranslateTransition anim = new TranslateTransition(Duration.millis(TIME+70)); lane.add(new Block(button.getColor(), 50, 50, 5)); @@ -260,6 +262,9 @@ public class SongPlayer extends Pane { e.printStackTrace(); } } + if (timer.time() > 0.0) { + gui.Driver.mediaPlayer.play(); + } } }; @@ -278,7 +283,9 @@ public class SongPlayer extends Pane { public void cancel() throws UnsupportedAudioFileException, IOException, LineUnavailableException { gameLoop.stop(); gui.Driver.mediaPlayer.stop(); - gui.Driver.mediaPlayer = new AudioFilePlayer("src/assets/MenuMusicPlaceholder.wav"); + Media song = new Media(Paths.get("src/assets/MenuMusicPlaceholder.wav").toUri().toString()); + gui.Driver.mediaPlayer = new MediaPlayer(song); + new MediaView(gui.Driver.mediaPlayer); gui.Driver.mediaPlayer.play(); } diff --git a/src/gameplay/Timer.java b/src/gameplay/Timer.java index e43ad19..bf07683 100644 --- a/src/gameplay/Timer.java +++ b/src/gameplay/Timer.java @@ -19,10 +19,10 @@ public class Timer } public double time() { - return ((double)(System.currentTimeMillis()-timeStart)-1000)*(bpm/60000.0); + return ((double)(System.currentTimeMillis()-timeStart)-2000)*(bpm/60000.0); } public String toString() { - return ""+((double)(System.currentTimeMillis()-timeStart)-1000)*(bpm/60000.0); + return ""+((double)(System.currentTimeMillis()-timeStart)-2000)*(bpm/60000.0); } } diff --git a/src/gui/Driver.java b/src/gui/Driver.java index 162d1fe..39cda73 100644 --- a/src/gui/Driver.java +++ b/src/gui/Driver.java @@ -22,6 +22,8 @@ import main.LevelController; import main.SettingsController; import sound.AudioFilePlayer; +import java.nio.file.Paths; + import javax.sound.sampled.AudioFileFormat; // import javafx.scene.image.ImageView; @@ -37,8 +39,8 @@ import gameplay.SongPlayer; public class Driver extends Application { - gameplay.SongPlayer placeHolder = new gameplay.SongPlayer(); - public static AudioFilePlayer mediaPlayer; + + public static MediaPlayer mediaPlayer; public static Stage primaryStage; static Pane primaryPane = new Pane(); @@ -62,7 +64,9 @@ public class Driver extends Application @Override public void start(Stage newPrimaryStage) { - mediaPlayer = new AudioFilePlayer("src/assets/MenuMusicPlaceholder.wav"); + Media song = new Media(Paths.get("src/assets/MenuMusicPlaceholder.wav").toUri().toString()); + mediaPlayer = new MediaPlayer(song); + new MediaView(mediaPlayer); mediaPlayer.play(); primaryStage = newPrimaryStage; @@ -73,7 +77,7 @@ public class Driver extends Application primaryStage.setScene(primaryScene); primaryStage.setTitle("NPE Hero"); - fixMenuSync(); + setMenu(new MainMenu()); setBackground("assets/forest.png"); @@ -87,11 +91,6 @@ public class Driver extends Application primaryStage.show(); } - private void fixMenuSync() { - primaryPane.getChildren().addAll(placeHolder); - primaryPane.getChildren().removeAll(placeHolder); - } - /** * Replaces/adds a new pane to the primaryPane * @param pane the new pane -- cgit v1.2.3