Advertisement
Guest User

SoundManager123454676798

a guest
Jul 31st, 2015
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.47 KB | None | 0 0
  1. public class SoundManager {
  2. private static Sound music;
  3. private static Array<Sound> sfx = new Array<Sound>();
  4.  
  5. public static Vector2 dimensionalSfx_Listener = new Vector2();
  6.  
  7. private static Array<Vector2> dimensionalSfx_Point = new Array<Vector2>();
  8. private static Array<Float> dimensionalSfx_Volume = new Array<Float>();
  9. private static Array<Long> dimensionalSfx_Id = new Array<Long>();
  10. private static Array<Sound> dimensionalSfx = new Array<Sound>();
  11.  
  12. private static float masterVolume = 1.0f;
  13. private static float musicVolume = 1.0f;
  14. private static float sfxVolume = 1.0f;
  15.  
  16. public static void update() {
  17. dimensionalSfx_Listener.set(
  18. EntityManager.bm.get(EntityManager.player).actor.getX(),
  19. EntityManager.bm.get(EntityManager.player).actor.getY());
  20.  
  21. for (Sound s : dimensionalSfx) {
  22. float distance = dimensionalSfx_Point.get(dimensionalSfx.indexOf(s, true)).dst(dimensionalSfx_Listener);
  23. float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
  24. * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
  25.  
  26. s.setVolume(
  27. dimensionalSfx_Id.get(dimensionalSfx.indexOf(s, true)),
  28. dimVol * dimensionalSfx_Volume.get(dimensionalSfx.indexOf(s, true)) * sfxVolume * masterVolume);
  29. }
  30. }
  31.  
  32. public static void updatePointPosition(Sound sound, Vector2 vector) {
  33. try {
  34. dimensionalSfx_Point.get(dimensionalSfx.indexOf(sound, true)).set(vector);
  35. } catch (ArrayIndexOutOfBoundsException e) {}
  36. }
  37.  
  38. public static void playMusic(Sound newmusic, float volume) {
  39. if (music != null) {
  40. music.stop();
  41. }
  42.  
  43. music = newmusic;
  44.  
  45. music.loop(volume * musicVolume * masterVolume);
  46. }
  47.  
  48. public static void playMusic(Sound newmusic, float volume, float pitch, float pan) {
  49. if (music != null) {
  50. music.stop();
  51. }
  52. music = newmusic;
  53. music.loop(volume * musicVolume * masterVolume, pitch, pan);
  54. }
  55.  
  56. public static void playSoundEffect(Sound newsfx, final float volume) {
  57. final Sound s = newsfx;
  58. sfx.add(s);
  59.  
  60. sfx.get(sfx.indexOf(s, true)).play(volume * sfxVolume * masterVolume);
  61.  
  62. Timer.schedule(new Timer.Task(){
  63. @Override
  64. public void run() {
  65. sfx.get(sfx.indexOf(s, true)).stop();
  66. sfx.get(sfx.indexOf(s, true)).dispose();
  67. sfx.removeIndex(sfx.indexOf(s, true));
  68. Timer.instance().clear();
  69. }
  70. }, 5f);
  71. }
  72.  
  73. public static void playSoundEffect(Sound newsfx, final float volume, final float pitch, final float pan) {
  74. final Sound s = newsfx;
  75. sfx.add(s);
  76.  
  77. sfx.get(sfx.indexOf(s, true)).play(volume * sfxVolume * masterVolume, pitch, pan);
  78.  
  79. Timer.schedule(new Timer.Task(){
  80. @Override
  81. public void run() {
  82. sfx.get(sfx.indexOf(s, true)).stop();
  83. sfx.get(sfx.indexOf(s, true)).dispose();
  84. sfx.removeIndex(sfx.indexOf(s, true));
  85. Timer.instance().clear();
  86. }
  87. }, 5f);
  88. }
  89.  
  90. public static void playDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume) {
  91.  
  92. float distance = vector.dst(dimensionalSfx_Listener);
  93.  
  94. float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
  95. * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
  96.  
  97. if (dimVol < 0.01f)
  98. return;
  99.  
  100. final Sound s = newsfx;
  101. dimensionalSfx.add(s);
  102. dimensionalSfx_Point.add(vector);
  103. dimensionalSfx_Volume.add(volume);
  104.  
  105. dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).play(dimVol * volume * sfxVolume * masterVolume));
  106.  
  107. Timer.schedule(new Timer.Task(){
  108. @Override
  109. public void run() {
  110. dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).stop();
  111. dimensionalSfx.removeIndex(dimensionalSfx.indexOf(s, true));
  112. dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(s, true));
  113. dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(s, true));
  114. dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(s, true));
  115. Timer.instance().clear();
  116. }
  117. }, 5f);
  118. }
  119.  
  120. public static void playDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume, float pitch, float pan) {
  121.  
  122. float distance = vector.dst(dimensionalSfx_Listener);
  123.  
  124. float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
  125. * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
  126.  
  127. if (dimVol < 0.01f)
  128. return;
  129.  
  130. final Sound s = newsfx;
  131. dimensionalSfx.add(s);
  132. dimensionalSfx_Point.add(vector);
  133. dimensionalSfx_Volume.add(volume);
  134.  
  135. dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).play(dimVol * volume * sfxVolume * masterVolume, pitch, pan));
  136.  
  137. Timer.schedule(new Timer.Task(){
  138. @Override
  139. public void run() {
  140. dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).stop();
  141. dimensionalSfx.removeIndex(dimensionalSfx.indexOf(s, true));
  142. dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(s, true));
  143. dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(s, true));
  144. dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(s, true));
  145. Timer.instance().clear();
  146. }
  147. }, 5f);
  148. }
  149.  
  150. public static void loopDimensionalSoundEffect(Sound newsfx, Vector2 vector, float volume) {
  151. final Sound s = newsfx;
  152. dimensionalSfx.add(s);
  153. dimensionalSfx_Point.add(vector);
  154. dimensionalSfx_Volume.add(volume);
  155.  
  156. float distance = vector.dst(dimensionalSfx_Listener);
  157.  
  158. float dimVol = ((ViewManager.width/2)/(Math.max(distance, (ViewManager.width/2))))
  159. * ((ViewManager.height/2)/(Math.max(distance, (ViewManager.height/2))));
  160.  
  161. dimensionalSfx_Id.add(dimensionalSfx.get(dimensionalSfx.indexOf(s, true)).loop(dimVol * volume * sfxVolume * masterVolume));
  162. }
  163.  
  164. public static void stopDimensionalSoundEffect(Sound sound) {
  165. dimensionalSfx.get(dimensionalSfx.indexOf(sound, true)).stop();
  166. dimensionalSfx_Volume.removeIndex(dimensionalSfx.indexOf(sound, true));
  167. dimensionalSfx_Point.removeIndex(dimensionalSfx.indexOf(sound, true));
  168. dimensionalSfx_Id.removeIndex(dimensionalSfx.indexOf(sound, true));
  169. dimensionalSfx.removeIndex(dimensionalSfx.indexOf(sound, true));
  170. }
  171.  
  172. public static void loopSound(Sound newsfx, float volume) {
  173. final Sound s = newsfx;
  174. sfx.add(s);
  175. sfx.get(sfx.indexOf(s, true)).loop(volume * sfxVolume * masterVolume);
  176. }
  177.  
  178. public static void stopSound(Sound sound) {
  179. sfx.get(sfx.indexOf(sound, true)).stop();
  180. sfx.removeIndex(sfx.indexOf(sound, true));
  181. }
  182.  
  183. public static void dispose() {
  184. if (music != null)
  185. music.dispose();
  186.  
  187. for (Sound s : sfx)
  188. s.dispose();
  189.  
  190. for (Sound s : dimensionalSfx)
  191. s.dispose();
  192. }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement