package info.u250.c2d.engine.resources; import info.u250.c2d.engine.Engine; import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.ObjectMap; /** * @author lycying@gmail.com */ public class MusicManager implements Disposable{ ObjectMap<String,Music> musics = new ObjectMap<String,Music>(); float musicVolume = 1f; public float getMusicVolume(){ return musicVolume; } public void setVolume(float volume){ for(Music music:musics.values()){ music.setVolume(volume); } this.musicVolume = volume; } public void stopMusic(String res){ final Music musicFromPool = musics.get(res); if(null==musicFromPool){ final Music musicFromAssets = Engine.resource(res); musics.put(res, musicFromAssets); musicFromAssets.stop(); }else{ musicFromPool.stop(); } } public void pauseMusic(String res){ final Music musicFromPool = musics.get(res); if(null==musicFromPool){ final Music musicFromAssets = Engine.resource(res); musics.put(res, musicFromAssets); if(musicFromAssets.isPlaying()){ musicFromAssets.pause(); } }else{ if(musicFromPool.isPlaying()){ musicFromPool.pause(); } } } public void playMusic(String res,boolean loop){ final Music musicFromPool = musics.get(res); if(null==musicFromPool){ final Music musicFromAssets =Engine.resource(res); musics.put(res, musicFromAssets); this.playMusic(musicFromAssets,loop); }else{ this.playMusic(musicFromPool,loop); } } private void playMusic(Music music,boolean loop){ if(!music.isPlaying()){ music.setVolume(musicVolume); music.setLooping(true); music.play(); } } public void dispose(){ for(Music music:musics.values()){ if(null!=music)music.dispose(); } this.musics.clear(); this.musicVolume = 1.0f; } }