57 lines
1.6 KiB
Java
57 lines
1.6 KiB
Java
package fr.monkhanny.dorfromantik.utils;
|
|
|
|
import fr.monkhanny.dorfromantik.enums.Musics;
|
|
import fr.monkhanny.dorfromantik.Options;
|
|
|
|
import javax.sound.sampled.Clip;
|
|
import javax.sound.sampled.FloatControl;
|
|
|
|
public class MusicPlayer {
|
|
private static Clip musicClip;
|
|
private static boolean isPlaying = false;
|
|
|
|
public static void loadMusic(Musics music) {
|
|
if (music == Musics.MAIN_MENU_MUSIC) {
|
|
musicClip = MusicLoader.loadMusic(Musics.MAIN_MENU_MUSIC.getSoundsPath());
|
|
if (musicClip != null) {
|
|
setVolume(Options.DEFAULT_VOLUME);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void play() {
|
|
loadMusic(Musics.MAIN_MENU_MUSIC);
|
|
if (musicClip != null && !isPlaying) {
|
|
musicClip.start();
|
|
isPlaying = true;
|
|
}
|
|
}
|
|
|
|
public static void pause() {
|
|
if (musicClip != null && isPlaying) {
|
|
musicClip.stop();
|
|
isPlaying = false;
|
|
}
|
|
}
|
|
|
|
public static void stop() {
|
|
if (musicClip != null) {
|
|
musicClip.stop();
|
|
musicClip.setFramePosition(0);
|
|
isPlaying = false;
|
|
}
|
|
}
|
|
|
|
public static void setVolume(int volume) {
|
|
if (musicClip != null) {
|
|
FloatControl volumeControl = (FloatControl) musicClip.getControl(FloatControl.Type.MASTER_GAIN);
|
|
float range = volumeControl.getMaximum() - volumeControl.getMinimum();
|
|
float gain = (range * volume / 100f) + volumeControl.getMinimum();
|
|
volumeControl.setValue(gain);
|
|
}
|
|
}
|
|
|
|
public static boolean isPlaying() {
|
|
return isPlaying;
|
|
}
|
|
} |