RadioMaster.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using UnityEngine;
  2. using static Il2Cpp.BaseAi;
  3. namespace AudioMgr
  4. {
  5. public static class RadioMaster
  6. {
  7. public static string musicPath = @"file:///" + Application.dataPath + @"/../Mods/AuroraRadio";
  8. public static ClipManager auroraClipManager;
  9. public static void Initialize()
  10. {
  11. auroraClipManager = new ClipManager();
  12. auroraClipManager.LoadClipsFromDir("AuroraRadio", ClipManager.LoadType.Stream);
  13. }
  14. private static Queue GetOrAddQueueToRadio(GameObject radioObject)
  15. {
  16. Queue radioQueue = radioObject.GetComponent<Queue>();
  17. if (radioQueue == null)
  18. {
  19. if(Settings.options.randomRadioMusic)
  20. {
  21. radioQueue = AudioMaster.CreateQueue(radioObject, auroraClipManager, 3f, Queue.Loop.Randomize, AudioMaster.SourceType.AuroraRadio);
  22. }
  23. else
  24. {
  25. radioQueue = AudioMaster.CreateQueue(radioObject, auroraClipManager, 3f, Queue.Loop.All, AudioMaster.SourceType.AuroraRadio);
  26. }
  27. }
  28. return radioQueue;
  29. }
  30. public static void StartPlay(GameObject radioObject)
  31. {
  32. if (auroraClipManager.clipCount > 0)
  33. {
  34. Queue radioQueue = GetOrAddQueueToRadio(radioObject);
  35. radioQueue.GetNextClip();
  36. radioQueue.Play();
  37. }
  38. }
  39. public static void StopPlay(GameObject radioObject)
  40. {
  41. if (auroraClipManager.clipCount > 0)
  42. {
  43. Queue radioQueue = GetOrAddQueueToRadio(radioObject);
  44. radioQueue.Stop();
  45. }
  46. }
  47. }
  48. }