package de.dbaelz.secludedness.manager;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
public class AudioManager {
private Sound mSound;
private Sound mCollisionSound;
private Sound mPortalSound;
private Sound mTrapSound;
private Music mMusic;
private boolean mSoundActivated = true;
private boolean mMusicActivated = true;
public enum SoundFile {
COLLISION("sounds/collision.ogg"),
PORTAL("sounds/portal.ogg"),
TRAP("sounds/trap.ogg");
private String mFilename;
private SoundFile(String filename) {
mFilename = filename;
}
private String getFilename() {
return mFilename;
}
}
public enum MusicFile {
// Ozzed
BOKTIPSET_FRAAN_HELVETET("music/ozzed/boktipset_fraan_helvetet.ogg"),
HIGHWAY_SLAUGHTER("music/ozzed/highway_slaughter.ogg"),
SUPER_SECRET_TUNE("music/ozzed/super_secret_tune.ogg"),
THE_DAY_TIME_RAN_AWAY("music/ozzed/the_day_time_ran_away.ogg"),
THE_FINAL_END("music/ozzed/the_final_end.ogg"),
WORLD_NAP("music/ozzed/world_nap.ogg");
private String mFilename;
private MusicFile(String filename) {
mFilename = filename;
}
private String getFilename() {
return mFilename;
}
public static MusicFile getRandomMusicFile() {
int random = (int) (Math.random() * (AudioManager.MusicFile.values().length - 0) + 0);
return values()[random];
}
}
public AudioManager() {
mCollisionSound = Gdx.audio.newSound(Gdx.files.internal(SoundFile.COLLISION.getFilename()));
mPortalSound = Gdx.audio.newSound(Gdx.files.internal(SoundFile.PORTAL.getFilename()));
mTrapSound = Gdx.audio.newSound(Gdx.files.internal(SoundFile.TRAP.getFilename()));
}
public void playSound(SoundFile file) {
if (mSoundActivated) {
mSound = Gdx.audio.newSound(Gdx.files.internal(file.getFilename()));
mSound.play(1.0f);
}
}
public void playCollisionSound() {
if (mSoundActivated) {
mCollisionSound.play();
}
}
public void playPortalSound() {
if (mSoundActivated) {
mPortalSound.play();
}
}
public void playTrapSound() {
if (mSoundActivated) {
mTrapSound.play();
}
}
public void playMusic(MusicFile file, boolean isLooping) {
if (mMusicActivated) {
if (mMusic != null) {
stopMusic();
}
mMusic = Gdx.audio.newMusic(Gdx.files.internal(file.getFilename()));
mMusic.setLooping(isLooping);
mMusic.play();
}
}
public void pauseMusic() {
if (mMusic != null && mMusic.isPlaying()) {
mMusic.pause();
}
}
public void resumeMusic() {
if (mMusicActivated && mMusic != null && !mMusic.isPlaying()) {
mMusic.play();
}
}
public void stopMusic() {
if (mMusic != null) {
mMusic.stop();
}
}
public boolean isMusicPlaying() {
if (mMusic != null) {
return mMusic.isPlaying();
}
return false;
}
public boolean isSoundActivated() {
return mSoundActivated;
}
public void setSoundActivated(boolean activated) {
mSoundActivated = activated;
}
public boolean isMusicActivated() {
return mMusicActivated;
}
public void setMusicActivated(boolean activated) {
mMusicActivated = activated;
if (!activated) {
pauseMusic();
} else {
mMusic.play();
}
}
public void dispose() {
if (mSound != null) {
mSound.dispose();
}
mCollisionSound.dispose();
mPortalSound.dispose();
mTrapSound.dispose();
if (mMusic != null) {
mMusic.dispose();
}
}
}