diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2023-05-30 08:49:51 -0400 | 
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2023-05-30 08:49:51 -0400 | 
| commit | 05ccbae5eff024267ece506de104aac50301031f (patch) | |
| tree | 44954ea5f1af2779c92eac599814114c8804a725 | |
| parent | a18f74388dee9e92e3c7165d440b778a79b65a1c (diff) | |
| parent | 0b7a23fc35acc1059654fd1df0505b2b10429dda (diff) | |
| download | NPEhero-05ccbae5eff024267ece506de104aac50301031f.tar.gz NPEhero-05ccbae5eff024267ece506de104aac50301031f.tar.bz2 NPEhero-05ccbae5eff024267ece506de104aac50301031f.zip  | |
Merge branch 'main' of https://gitlab.sowgro.net/guitarheros/guitarhero
Diffstat (limited to '')
| -rw-r--r-- | src/gameplay/SongPlayer.java | 41 | 
1 files changed, 39 insertions, 2 deletions
diff --git a/src/gameplay/SongPlayer.java b/src/gameplay/SongPlayer.java index c770b8a..7ea6bfa 100644 --- a/src/gameplay/SongPlayer.java +++ b/src/gameplay/SongPlayer.java @@ -2,10 +2,15 @@ package gameplay;  import java.io.File;  import java.io.FileNotFoundException; +import java.io.IOException;  import java.util.ArrayList;  import java.util.LinkedList;  import java.util.Queue;  import java.util.Scanner; +import java.util.logging.Level; + +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException;  import gui.GameOver;  import javafx.geometry.Pos; @@ -38,6 +43,13 @@ import sound.AudioFilePlayer;  public class SongPlayer extends Pane {  	private int bpm;		//initializes the bpm of the song, to be read in from a metadata file later +	private int songLength; //initializes the length of the song in terms of the song's bpm, to be read in later + +	sound.AudioFilePlayer music; +	private main.Level level; +	private Difficulty difficulty; +	private Pane pane; +  	Timer timer;			//the timer that determines when notes will fall, counted in terms of the song's bpm  	final int TIME = 1500;  //delay for notes falling down the screen @@ -98,6 +110,12 @@ public class SongPlayer extends Pane {  	public SongPlayer(main.Level lvl, Difficulty d, Pane p, ScoreController cntrl) {  		bpm = d.bpm;					//Reads the song's bpm from a metadata file +		 +		level = lvl; +		difficulty = d; +		pane = p; + +		songLength = 28;   		timer = new Timer(120);	//Sets the timer's bpm to that of the song  		scoreCounter = cntrl;			//Uses the song's designated scoreCounter @@ -157,9 +175,9 @@ public class SongPlayer extends Pane {  		super.getChildren().addAll(root);	//puts all of the combonents in the pane to be rendered -		sound.AudioFilePlayer music = new AudioFilePlayer("src/assets/TestSync120bpm.wav"); -		music.play();  		gameLoop.start();		//starts the gameLoop, a periodic backround task runner that runs the methods within it 60 times every second +		music = new AudioFilePlayer("src/assets/TestSync120bpm.wav"); +		music.play();  	}  	/** @@ -228,10 +246,29 @@ public class SongPlayer extends Pane {  			sendNote(spaceSends, spaceLane, sButton);  			sendNote(jSends, jLane, jButton);  			sendNote(kSends, kLane, kButton); +			if (timer.time() > songLength) { +				try { +					cancel(); +				} catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { +					e.printStackTrace(); +				} +				gui.Driver.setMenu(new GameOver(level, difficulty, pane, scoreCounter.getScore())); +			}  		}  	};  	/** +	 * Stops the gameloop and the music +	 * @throws LineUnavailableException +	 * @throws IOException +	 * @throws UnsupportedAudioFileException +	 */ +	public void cancel() throws UnsupportedAudioFileException, IOException, LineUnavailableException { +		gameLoop.stop(); +		music.stop(); +	} + +	/**  	 * returns the pos in the lane array of the closest note to the goal  	 *   	 * @param searchLane  | 
