1
0

RadioMaster.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using MelonLoader;
  2. using UnityEngine;
  3. using static Il2Cpp.BaseAi;
  4. namespace AudioMgr
  5. {
  6. public static class RadioMaster
  7. {
  8. public static string musicPath = @"file:///" + Application.dataPath + @"/../Mods/AuroraRadio";
  9. public static ClipManager auroraClipManager;
  10. //public static bool foundFiles = false;
  11. public static void Initialize()
  12. {
  13. if (!Directory.Exists(Application.dataPath + "/../Mods/AuroraRadio"))
  14. {
  15. Directory.CreateDirectory(Application.dataPath + "/../Mods/AuroraRadio");
  16. }
  17. auroraClipManager = new ClipManager();
  18. auroraClipManager.LoadClipsFromDir("AuroraRadio", ClipManager.LoadType.Stream);
  19. }
  20. private static Queue GetOrAddQueueToRadio(GameObject radioObject)
  21. {
  22. Queue radioQueue = radioObject.GetComponent<Queue>();
  23. if (radioQueue == null)
  24. {
  25. if(Settings.options.randomRadioMusic)
  26. {
  27. radioQueue = AudioMaster.CreateQueue(radioObject, auroraClipManager, 3f, Queue.Loop.Randomize, AudioMaster.SourceType.AuroraRadio);
  28. }
  29. else
  30. {
  31. radioQueue = AudioMaster.CreateQueue(radioObject, auroraClipManager, 3f, Queue.Loop.All, AudioMaster.SourceType.AuroraRadio);
  32. }
  33. }
  34. return radioQueue;
  35. }
  36. private static Stream GetOrAddStreamToRadio(GameObject radioObject, string streamURL)
  37. {
  38. Stream radioStream = radioObject.GetComponent<Stream>();
  39. if (radioStream == null)
  40. {
  41. radioStream = AudioMaster.CreateStream(radioObject, streamURL, AudioMaster.SourceType.AuroraRadio);
  42. }
  43. radioStream.streamURL = streamURL;
  44. return radioStream;
  45. }
  46. public static void StartStream(GameObject radioObject, string streamURL)
  47. {
  48. Stream radioStream = GetOrAddStreamToRadio(radioObject, streamURL);
  49. radioStream.Play();
  50. }
  51. public static void StopStream(GameObject radioObject)
  52. {
  53. Stream radioStream = radioObject.GetComponent<Stream>();
  54. if (radioStream != null)
  55. {
  56. radioStream.Stop();
  57. }
  58. }
  59. public static void StartQueue(GameObject radioObject)
  60. {
  61. if (auroraClipManager.clipCount > 0)
  62. {
  63. Queue radioQueue = GetOrAddQueueToRadio(radioObject);
  64. radioQueue.Play();
  65. }
  66. }
  67. public static void StopQueue(GameObject radioObject)
  68. {
  69. if (auroraClipManager.clipCount > 0)
  70. {
  71. Queue radioQueue = GetOrAddQueueToRadio(radioObject);
  72. radioQueue.Stop();
  73. }
  74. }
  75. }
  76. }