package Roguelike.Sound;
import Roguelike.Global;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
public class Mixer
{
String musicName;
Music music;
float volume;
String mixName;
Music mix;
float mixTime;
float time;
public Mixer(String musicName, float volume)
{
this.musicName = musicName;
this.volume = volume;
music = Gdx.audio.newMusic(Gdx.files.internal("Music/"+musicName+".ogg"));
music.play();
music.setLooping(true);
music.setVolume( volume * Global.MusicVolume);
}
public void mix(String mixName, float time)
{
if (musicName.equals(mixName)) { return; }
this.mixName = mixName;
mix = Gdx.audio.newMusic(Gdx.files.internal("Music/"+mixName+".ogg"));
try
{
mix.play();
mix.setLooping(true);
mix.setVolume(0);
mixTime = time;
this.time = 0;
}
catch (Exception e)
{
musicName = mixName;
music.stop();
music.dispose();
music = mix;
mix = null;
music.play();
music.setLooping( true );
float actualVolume = volume * Global.MusicVolume;
music.setVolume(actualVolume);
}
}
public void update(float delta)
{
if (mix != null)
{
time += delta;
float actualVolume = volume * Global.MusicVolume;
float vol = actualVolume * (time / mixTime);
mix.setVolume(vol);
music.setVolume(actualVolume-vol);
if (time >= mixTime)
{
musicName = mixName;
music.stop();
music.dispose();
music = mix;
mix = null;
music.setVolume(actualVolume);
}
}
}
public void updateVolume()
{
if (mix == null)
{
music.setVolume( volume * Global.MusicVolume );
}
}
}