Decompiled source of SettingsUI v1.0.0

Mods/SettingsUI.dll

Decompiled 5 days ago
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);
	}
}