Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SoundManager {
- private static Sound music;
- private static Array<Sound> sfx = new Array<Sound>();
- public static Vector2 dimensionalSfx_Listener = new Vector2();
- private static Array<Vector2> dimensionalSfx_Point = new Array<Vector2>();
- private static Array<Float> dimensionalSfx_Volume = new Array<Float>();
- private static Array<Long> dimensionalSfx_Id = new Array<Long>();
- private static Array<Sound> dimensionalSfx = new Array<Sound>();
- private static float masterVolume = 1.0f;
- private static float musicVolume = 1.0f;
- private static float sfxVolume = 1.0f;
- public static void update() {
- dimensionalSfx_Listener.set(
- EntityManager.bm.get(EntityManager.player).actor.getX(),
- EntityManager.bm.get(EntityManager.player).actor.getY());
- for (Sound s : dimensionalSfx) {
- float distance = dimensionalSfx_Point.get(dimensionalSfx.indexOf(s, true)).dst(dimensionalSfx_Listener);
- float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
- * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
- s.setVolume(
- dimensionalSfx_Id.get(dimensionalSfx.indexOf(s, true)),
- dimVol * dimensionalSfx_Volume.get(dimensionalSfx.indexOf(s, true)) * sfxVolume * masterVolume);
- }
- }
- public static void updatePointPosition(Sound sound, Vector2 vector) {
- try {
- dimensionalSfx_Point.get(dimensionalSfx.indexOf(sound, true)).set(vector);
- } catch (ArrayIndexOutOfBoundsException e) {}
- }
- public static void playMusic(Sound newmusic, float volume) {
- if (music != null) {
- music.stop();
- }
- music = newmusic;
- music.loop(volume * musicVolume * masterVolume);
- }
- public static void playMusic(Sound newmusic, float volume, float pitch, float pan) {
- if (music != null) {
- music.stop();
- }
- music = newmusic;
- music.loop(volume * musicVolume * masterVolume, pitch, pan);
- }
- public static void playSoundEffect(Sound newsfx, final float volume) {
- final Sound s = newsfx;
- sfx.add(s);
- sfx.get(sfx.indexOf(s, true)).play(volume * sfxVolume * masterVolume);
- Timer.schedule(new Timer.Task(){
- @Override
- public void run() {
- sfx.get(sfx.indexOf(s, true)).stop();
- sfx.get(sfx.indexOf(s, true)).dispose();
- sfx.removeIndex(sfx.indexOf(s, true));
- Timer.instance().clear();
- }
- }, 5f);
- }
- public static void playSoundEffect(Sound newsfx, final float volume, final float pitch, final float pan) {
- final Sound s = newsfx;
- sfx.add(s);
- sfx.get(sfx.indexOf(s, true)).play(volume * sfxVolume * masterVolume, pitch, pan);
- Timer.schedule(new Timer.Task(){
- @Override
- public void run() {
- sfx.get(sfx.indexOf(s, true)).stop();
- sfx.get(sfx.indexOf(s, true)).dispose();
- sfx.removeIndex(sfx.indexOf(s, true));
- Timer.instance().clear();
- }
- }, 5f);
- }
- public static void playDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume) {
- float distance = vector.dst(dimensionalSfx_Listener);
- float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
- * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
- if (dimVol < 0.01f)
- return;
- final Sound s = newsfx;
- dimensionalSfx.add(s);
- dimensionalSfx_Point.add(vector);
- dimensionalSfx_Volume.add(volume);
- dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).play(dimVol * volume * sfxVolume * masterVolume));
- Timer.schedule(new Timer.Task(){
- @Override
- public void run() {
- dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).stop();
- dimensionalSfx.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(s, true));
- Timer.instance().clear();
- }
- }, 5f);
- }
- public static void playDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume, float pitch, float pan) {
- float distance = vector.dst(dimensionalSfx_Listener);
- float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
- * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
- if (dimVol < 0.01f)
- return;
- final Sound s = newsfx;
- dimensionalSfx.add(s);
- dimensionalSfx_Point.add(vector);
- dimensionalSfx_Volume.add(volume);
- dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).play(dimVol * volume * sfxVolume * masterVolume, pitch, pan));
- Timer.schedule(new Timer.Task(){
- @Override
- public void run() {
- dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).stop();
- dimensionalSfx.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(s, true));
- dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(s, true));
- Timer.instance().clear();
- }
- }, 5f);
- }
- public static void loopDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume) {
- final Sound s = newsfx;
- dimensionalSfx.add(s);
- dimensionalSfx_Point.add(vector);
- dimensionalSfx_Volume.add(volume);
- float distance = vector.dst(dimensionalSfx_Listener);
- float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
- * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
- dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).loop(dimVol * volume * sfxVolume * masterVolume));
- }
- public static void stopDimensionalSoundEffect(Sound sound) {
- dimensionalSfx.get(dimensionalSfx.indexOf(sound, true)).stop();
- dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(sound, true));
- dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(sound, true));
- dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(sound, true));
- dimensionalSfx.removeIndex(dimensionalSfx.indexOf(sound, true));
- }
- public static void loopSound(Sound newsfx, float volume) {
- final Sound s = newsfx;
- sfx.add(s);
- sfx.get(sfx.indexOf(s, true)).loop(volume * sfxVolume * masterVolume);
- }
- public static void stopSound(Sound sound) {
- sfx.get(sfx.indexOf(sound, true)).stop();
- sfx.removeIndex(sfx.indexOf(sound, true));
- }
- public static void dispose() {
- if (music != null)
- music.dispose();
- for (Sound s : sfx)
- s.dispose();
- for (Sound s : dimensionalSfx)
- s.dispose();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement