package com.tacoid.pweek;
import java.util.HashMap;
import java.util.Map;
import com.badlogic.gdx.audio.Music;
import com.tacoid.pweek.PreferenceManager.Preference;
import com.tacoid.tracking.TrackingManager;
public class MusicPlayer {
public static MusicPlayer instance = null;
public static boolean initialized = false;
static public enum MusicType {
MAIN
}
private Map<MusicType, Music> musics;
private float volume;
private Music playing = null;
private boolean muted = false;
public void init(Music music) {
musics = new HashMap<MusicType, Music>();
playing = null;
musics.put(MusicType.MAIN, music);
if(!PreferenceManager.getInstance().isPreferenceDefined(Preference.MUSIC_STATE)) {
PreferenceManager.getInstance().setPreference(Preference.MUSIC_STATE, "on");
} else {
if(PreferenceManager.getInstance().getPreference(Preference.MUSIC_STATE).equals("off")) {
muted = true;
}
}
}
private MusicPlayer() {
}
public static MusicPlayer getInstance() {
if (instance == null) {
instance = new MusicPlayer();
}
return instance;
}
public void playMusic(MusicType music, boolean looping) {
Music m = musics.get(music);
if(playing != null && playing.isPlaying()) {
playing.stop();
}
if(muted) {
m.setVolume(0.0f);
} else {
m.setVolume(volume);
}
m.setLooping(looping);
m.play();
playing = m;
}
public void stopMusic() {
playing.stop();
}
public void setVolume(float volume) {
this.volume = volume;
if(playing != null && playing.isPlaying() && !muted) {
playing.setVolume(volume);
}
}
public void mute() {
muted = true;
if(playing != null && playing.isPlaying()) {
playing.setVolume(0.0f);
}
TrackingManager.getTracker().trackEvent("UI", "sound", "music mute", null);
PreferenceManager.getInstance().setPreference(Preference.MUSIC_STATE, "off");
}
public void unmute() {
muted = false;
if(playing != null && playing.isPlaying()) {
playing.setVolume(volume);
}
TrackingManager.getTracker().trackEvent("UI", "sound", "music unmute", null);
PreferenceManager.getInstance().setPreference(Preference.MUSIC_STATE, "on");
}
public boolean isMuted() {
return muted;
}
}