package mightypork.gamecore.audio; import java.util.HashMap; import java.util.Map; import mightypork.gamecore.audio.players.EffectPlayer; import mightypork.gamecore.audio.players.LoopPlayer; /** * Audio resource storage * * @author Ondřej Hruška (MightyPork) */ public class SoundRegistry { private final Map effects = new HashMap<>(); private final Map loops = new HashMap<>(); /** * Register effect resource * * @param key sound key * @param effect the effect to add (Obtained from audio module) */ public void addEffect(String key, EffectPlayer effect) { effects.put(key, effect); } /** * Register loop resource (music / effect loop) * * @param key sound key * @param loop the loop to add (Obtained from audio module) */ public void addLoop(String key, LoopPlayer loop) { loops.put(key, loop); } /** * Get a loop player for key * * @param key sound key * @return loop player */ public LoopPlayer getLoop(String key) { final LoopPlayer p = loops.get(key); if (p == null) { throw new RuntimeException("Unknown sound loop \"" + key + "\"."); } return p; } /** * Get a effect player for key * * @param key sound key * @return effect player */ public EffectPlayer getEffect(String key) { final EffectPlayer p = effects.get(key); if (p == null) { throw new RuntimeException("Unknown sound effect \"" + key + "\"."); } return p; } }