package stu.tnt.gdx.core.loader; import stu.tnt.gdx.core.eAdmin; import com.badlogic.gdx.assets.AssetLoaderParameters; import com.badlogic.gdx.assets.loaders.MusicLoader.MusicParameter; import com.badlogic.gdx.assets.loaders.SoundLoader.SoundParameter; import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.utils.ObjectMap.Entries; import com.badlogic.gdx.utils.ObjectMap.Entry; /** * Cached audio assets path before its loaded * * @FileName: Album.java * @CreateOn: Sep 15, 2012 - 11:05:58 AM * @Author: TrungNT */ public final class Album extends Context { private static final AssetLoaderParameters MusicParam = new MusicParameter(); private static final AssetLoaderParameters SoundParam = new SoundParameter(); private static UnloadedCallback unloaded; public Album(String name) { super(name, eAdmin.eaudio.manager); eAdmin.eaudio.addAlbum(this); MusicParam.loadedCallback = eAdmin.eaudio; SoundParam.loadedCallback = eAdmin.eaudio; unloaded = eAdmin.eaudio; } @Override public <T> void load(String linkName, Class<T> clazz) { Data data = null; if (clazz.equals(Sound.class)) data = new Data<T>(clazz, SoundParam); else if (clazz.equals(Music.class)) data = new Data<T>(clazz, MusicParam); mDataMap.put(linkName, data); mUnloadedData.add(linkName); } @Override public <T> void load(String linkName, Class<T> clazz, AssetLoaderParameters<T> param) { this.load(linkName, clazz); } @Override public void unload() { // ============= unload all data ============= Entries<String, Data> es = mDataMap.entries(); for (Entry<String, Data> e : es) { if (e.value.clazz.equals(Sound.class)) eAdmin.eaudio.stopSound(e.key); else if (e.value.clazz.equals(Music.class)) eAdmin.eaudio.stopMusic(e.key); assets.unload(e.key); unloaded.unloaded(e.key, e.value.clazz); } // ============= put to unloaded list ============= for (String s : mDataMap.keys()) if (!mUnloadedData.contains(s)) mUnloadedData.add(s); } @Override public void unload(String... linkName) { super.unload(linkName); // ============= unload all data ============= for (String s : linkName) { Data d = mDataMap.get(s); unloaded.unloaded(s, d.clazz); } } @Override public void remove(String... listName) { super.remove(listName); // ============= unload all data ============= for (String s : listName) { Data d = mDataMap.get(s); unloaded.unloaded(s, d.clazz); } } @Override public void dispose() { super.dispose(); Entries<String, Data> entries = mDataMap.entries(); for (Entry<String, Data> entry : entries) { unloaded.unloaded(entry.key, entry.value.clazz); } } }