package com.opticalcobra.storybear.res;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
/**
*
* @author Nicolas
*
*/
public class MusicPlayer {
public static final String musicFile = "music\\StoryBear_Menu.wav";
private static MusicPlayer instance;
private Clip clip;
private AudioInputStream audio;
private boolean running;
private boolean disabled = false;
/**
*
*/
private MusicPlayer() {
try {
audio = AudioSystem.getAudioInputStream(new File(Ressources.RESPATH+musicFile).getAbsoluteFile());
clip = AudioSystem.getClip();
clip.open(audio);
} catch (IllegalArgumentException | LineUnavailableException | IOException | UnsupportedAudioFileException e) {
disabled = true;
}
}
/**
* play sound in loop
*/
public void start() {
if (disabled) return;
running = true;
clip.loop(Clip.LOOP_CONTINUOUSLY);
}
/**
* pause
*/
public void pause() {
if (disabled) return;
running = false;
clip.stop();
}
/**
* toggle
*/
public boolean toggle() {
if (disabled) return disabled;
if(running)
pause();
else
start();
return running;
}
/**
*
*/
public boolean isRunning() {
return running;
}
/**
*
* @return
*/
public static MusicPlayer getInstance() {
return (instance == null) ? instance = new MusicPlayer() : instance;
}
}