blob: 0d7527ec4724d8b08fa03398f5ac77d6781d9ae7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package main;
import java.io.File;
import java.nio.file.Paths;
import java.util.HashMap;
import gui.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 HashMap<String,MediaPlayer> effects = new HashMap<>();
private File mainMenuSong = Paths.get("resources/fairyfountain.wav").toFile();
/**
* creates a new sound controller and starts playing the main menu music
*/
public SoundController()
{
effects.put("hit", new MediaPlayer(new Media(Paths.get("resources/hit.wav").toUri().toString())));
effects.put("miss", new MediaPlayer(new Media(Paths.get("resources/miss.wav").toUri().toString())));
effects.put("forward", new MediaPlayer(new Media(Paths.get("resources/forward.wav").toUri().toString())));
effects.put("backward", new MediaPlayer(new Media(Paths.get("resources/backward.wav").toUri().toString())));
effects.forEach((key,value) -> {
value.volumeProperty().bind(Driver.settingsController.effectsVol);
});
playMenuSong();
}
/**
* plays the song that is passed in.
* @param songFile: the song
*/
public void playSong(File songFile)
{
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()
{
playSong(mainMenuSong);
songMediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
songMediaPlayer.play();
}
/**
* stops the currently playing song
*/
public void endSong()
{
if (songMediaPlayer != null)
{
songMediaPlayer.stop();
}
}
/**
* plays a sound effect
* for the volume slider to take affect each mediaplayer needs to be pre loaded.
* 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
*/
public void playSfx(String preset)
{
effects.get(preset).seek(new Duration(0));
effects.get(preset).play();
}
}
|