RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of Rumble Sounds On Scene Change v1.0.0
Mods/RumbleSoundsOnSceneChange.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Media; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Threading; using MelonLoader; using RumbleSoundsOnSceneChange; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(SoundsOnSceneChange), "Sounds On Scene Change", "1.0.0", "UlvakSkillz", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: AssemblyTitle("RumbleSoundsOnSceneChange")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("RumbleSoundsOnSceneChange")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ec0b0af5-fe4b-4046-b655-6fafa96924e1")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace RumbleSoundsOnSceneChange; public class SoundsOnSceneChange : MelonMod { private string GameLoadSoundFilePath = "UserData\\SoundOnSceneChange\\GameLoadSound.wav"; private string EnterGymFromLoaderSoundFilePath = "UserData\\SoundOnSceneChange\\EnterGymFromLoaderSound.wav"; private string EnterGymFromParkSoundFilePath = "UserData\\SoundOnSceneChange\\EnterGymFromParkSound.wav"; private string EnterGymFromMatchmakingSoundFilePath = "UserData\\SoundOnSceneChange\\EnterGymFromMatchmakingSound.wav"; private string EnterParkSoundFilePath = "UserData\\SoundOnSceneChange\\EnterParkSound.wav"; private string EnterMatchmakingFromGymSoundFilePath = "UserData\\SoundOnSceneChange\\EnterMatchmakingFromGymSound.wav"; private string EnterMatchmakingFromMatchmakingSoundFilePath = "UserData\\SoundOnSceneChange\\EnterMatchmakingFromMatchmakingSound.wav"; private string lastScene = ""; private string currentScene = ""; private bool sceneChanged = true; private static Thread soundThread; private static bool soundThreadActive; public override void OnUpdate() { ((MelonBase)this).OnUpdate(); if (!sceneChanged) { return; } sceneChanged = false; switch (currentScene) { case "Loader": PlaySoundIfFileExists(GameLoadSoundFilePath); break; case "Gym": switch (lastScene) { case "Loader": PlaySoundIfFileExists(EnterGymFromLoaderSoundFilePath); break; case "Park": PlaySoundIfFileExists(EnterGymFromParkSoundFilePath); break; case "Map0": case "Map1": PlaySoundIfFileExists(EnterGymFromMatchmakingSoundFilePath); break; } break; case "Park": PlaySoundIfFileExists(EnterParkSoundFilePath); break; case "Map0": case "Map1": switch (lastScene) { case "Gym": PlaySoundIfFileExists(EnterMatchmakingFromGymSoundFilePath); break; case "Map0": case "Map1": PlaySoundIfFileExists(EnterMatchmakingFromMatchmakingSoundFilePath); break; } break; } } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { ((MelonMod)this).OnSceneWasLoaded(buildIndex, sceneName); lastScene = currentScene; currentScene = sceneName; sceneChanged = true; } public void PlaySoundIfFileExists(string soundFilePath) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown ((MelonBase)this).LoggerInstance.Msg("Playing '" + soundFilePath + "' Sound File."); ((MelonBase)this).LoggerInstance.Msg("-Does File Exist?"); if (File.Exists(soundFilePath)) { ((MelonBase)this).LoggerInstance.Msg("--Yes"); if (!soundThreadActive) { try { SoundPlayer player = new SoundPlayer(soundFilePath); try { soundThreadActive = true; if (soundThread == null || !soundThread.IsAlive) { soundThread = new Thread((ThreadStart)delegate { ((MelonBase)this).LoggerInstance.Msg("-Playing"); player.PlaySync(); ((MelonBase)this).LoggerInstance.Msg("--Done"); soundThreadActive = false; }); soundThread.Start(); } return; } finally { if (player != null) { ((IDisposable)player).Dispose(); } } } catch (Exception ex) { ((MelonBase)this).LoggerInstance.Msg("Error playing sound: " + ex.Message); return; } } ((MelonBase)this).LoggerInstance.Msg("-A Sound is already playing. Ignoring request."); } else { ((MelonBase)this).LoggerInstance.Msg("--No"); } } }