using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using Il2CppRUMBLE.Managers;
using Il2CppRUMBLE.Serialization;
using Il2CppRUMBLE.Utilities;
using MelonLoader;
using RumbleModUI;
using SettingsUI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(Mod), "SettingsUI", "1.0.0", "MasterMischief", null)]
[assembly: MelonGame("Buckethead Entertainment", "RUMBLE")]
[assembly: VerifyLoaderVersion(0, 6, 2, true)]
[assembly: AssemblyTitle("SettingsUI")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SettingsUI")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("06ed8e86-e143-46b0-969e-ee4f410032bb")]
[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 SettingsUI;
public class Mod : MelonMod
{
private enum SettingType
{
MasterVolume,
SFXVolume,
MusicVolume,
VoiceVolume
}
private bool doneInit = false;
private static Mod audioSettings = new Mod();
private static ModSetting<float> masterVolume;
private static ModSetting<float> sfxVolume;
private static ModSetting<float> musicVolume;
private static ModSetting<float> voiceVolume;
public override void OnLateInitializeMelon()
{
UI.instance.UI_Initialized += OnUIInit;
}
public override void OnSceneWasLoaded(int buildIndex, string sceneName)
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
if (!doneInit && Singleton<AudioManager>.instance.ConfigLoaded)
{
Tags val = new Tags
{
DoNotSave = true
};
audioSettings.ModName = "SettingsUI";
audioSettings.ModVersion = "1.0.0";
audioSettings.SetFolder("SettingsUI");
AudioConfiguration audioConfig = Singleton<AudioManager>.instance.audioConfig;
masterVolume = audioSettings.AddToList("Master Volume", audioConfig.MasterVolume, "Master volume. 0-1 covers the normal range. >1 allows boosting beyond the normal volume limit.", val);
sfxVolume = audioSettings.AddToList("SFX Volume", audioConfig.SFXVolume, "Sound effects volume. 0-1 covers the normal range. >1 allows boosting beyond the normal volume limit.", val);
musicVolume = audioSettings.AddToList("Music Volume", audioConfig.MusicVolume, "Music volume. 0-1 covers the normal range. >1 allows boosting beyond the normal volume limit.", val);
voiceVolume = audioSettings.AddToList("Voice Volume", audioConfig.VoiceVolume, "Voice volume. 0-1 covers the normal range. >1 allows boosting beyond the normal volume limit.", val);
((ModSetting)masterVolume).SavedValueChanged += masterVolumeChanged;
((ModSetting)sfxVolume).SavedValueChanged += sfxVolumeChanged;
((ModSetting)musicVolume).SavedValueChanged += musicVolumeChanged;
((ModSetting)voiceVolume).SavedValueChanged += voiceVolumeChanged;
doneInit = true;
}
}
public static void OnUIInit()
{
UI.instance.AddMod(audioSettings);
}
private static void ChangeSetting(SettingType type, float value)
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
AudioConfiguration audioConfig = Singleton<AudioManager>.instance.audioConfig;
switch (type)
{
case SettingType.MasterVolume:
audioConfig.MasterVolume = value;
break;
case SettingType.SFXVolume:
audioConfig.SFXVolume = value;
break;
case SettingType.MusicVolume:
audioConfig.MusicVolume = value;
break;
case SettingType.VoiceVolume:
audioConfig.VoiceVolume = value;
break;
default:
MelonLogger.Warning("Tried to save invalid setting.");
break;
}
Singleton<AudioManager>.instance.ApplyConfiguration(audioConfig);
Singleton<AudioManager>.instance.SaveConfiguration();
}
public static void masterVolumeChanged(object sender, EventArgs args)
{
ChangeSetting(SettingType.MasterVolume, ((ValueChange<float>)(object)args).Value);
}
public static void sfxVolumeChanged(object sender, EventArgs args)
{
ChangeSetting(SettingType.SFXVolume, ((ValueChange<float>)(object)args).Value);
}
public static void musicVolumeChanged(object sender, EventArgs args)
{
ChangeSetting(SettingType.MusicVolume, ((ValueChange<float>)(object)args).Value);
}
public static void voiceVolumeChanged(object sender, EventArgs args)
{
ChangeSetting(SettingType.VoiceVolume, ((ValueChange<float>)(object)args).Value);
}
}