Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of LCMaxSoundsFix v1.2.0
LCMaxSoundsFix.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("LCMaxSoundsFix")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Simple mod that increase max number of simultaneous playing sounds, hopefully fixing missing footsteps and other missing sound problems.")] [assembly: AssemblyFileVersion("1.2.0.0")] [assembly: AssemblyInformationalVersion("1.2.0+9a4b27ad682db1b4d7bf4f4f8177235f287bb642")] [assembly: AssemblyProduct("LCMaxSoundsFix")] [assembly: AssemblyTitle("LCMaxSoundsFix")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LCMaxSoundFix { public class AcceptableValueListSorted<T> : AcceptableValueList<T> where T : IEquatable<T>, IComparable<T> { public AcceptableValueListSorted(params T[] acceptableValues) : base(acceptableValues) { Array.Sort(((AcceptableValueList<T>)this).AcceptableValues); } public override object Clamp(object value) { if (value is IComparable<T>) { int num = 0; T other = (T)value; for (int i = 0; i < ((AcceptableValueList<T>)this).AcceptableValues.Length; i++) { int num2 = ((AcceptableValueList<T>)this).AcceptableValues[i].CompareTo(other); if (num2 == 0) { num = i; break; } if (num2 < 0) { num = i; } else if (num2 > 0) { if (i == 0) { num = i; } else if (typeof(T) == typeof(int)) { int num3 = Math.Abs(Convert.ToInt32(((AcceptableValueList<T>)this).AcceptableValues[i]) - (int)value); int num4 = Math.Abs(Convert.ToInt32(((AcceptableValueList<T>)this).AcceptableValues[i - 1]) - (int)value); num = ((num3 < num4) ? i : (i - 1)); } break; } } return ((AcceptableValueList<T>)this).AcceptableValues[num]; } return base.Clamp(value); } } internal static class AudioConfig { private static ConfigEntry<int> _numRealVoices = null; private static ConfigEntry<int> _numVirtualVoices = null; private static readonly int[] _validNumVoices = new int[13] { 1, 2, 4, 8, 16, 32, 50, 64, 100, 128, 256, 512, 1024 }; public static void Bind(BaseUnityPlugin plugin) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown if (plugin == null) { throw new ArgumentNullException("plugin"); } Unbind(); _numRealVoices = plugin.Config.Bind<int>("Audio Settings", "Real Voices", 128, new ConfigDescription("The current maximum number of simultaneously audible sounds in the game. Game default: 40", (AcceptableValueBase)(object)new AcceptableValueListSorted<int>(_validNumVoices), Array.Empty<object>())); _numVirtualVoices = plugin.Config.Bind<int>("Audio Settings", "Virtual Voices", 1024, new ConfigDescription("The maximum number of managed sounds in the game. Beyond this limit sounds will simply stop playing. Game default: 512", (AcceptableValueBase)(object)new AcceptableValueListSorted<int>(_validNumVoices), Array.Empty<object>())); _numRealVoices.SettingChanged += OnSettingChanged; _numVirtualVoices.SettingChanged += OnSettingChanged; ApplyChanges(); } public static void Unbind() { if (_numRealVoices != null) { _numRealVoices.SettingChanged -= OnSettingChanged; ((ConfigEntryBase)_numRealVoices).ConfigFile.Remove(((ConfigEntryBase)_numRealVoices).Definition); _numRealVoices = null; } if (_numVirtualVoices != null) { _numVirtualVoices.SettingChanged -= OnSettingChanged; ((ConfigEntryBase)_numVirtualVoices).ConfigFile.Remove(((ConfigEntryBase)_numVirtualVoices).Definition); _numVirtualVoices = null; } } private static void OnSettingChanged(object sender, EventArgs e) { ApplyChanges(); } private static void ApplyChanges() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) ManualLogSource logger = Plugin.Logger; if (logger != null) { logger.LogDebug((object)"Applying audio settings..."); } AudioConfiguration configuration = AudioSettings.GetConfiguration(); configuration.numRealVoices = _numRealVoices.Value; configuration.numVirtualVoices = _numVirtualVoices.Value; AudioSettings.Reset(configuration); ManualLogSource logger2 = Plugin.Logger; if (logger2 != null) { logger2.LogInfo((object)$"Audio settings (numRealVoices={_numRealVoices.Value}; numVirtualVoices={_numVirtualVoices.Value}) are applied."); } } } [BepInPlugin(".LCMaxSoundsFix", "LCMaxSoundsFix", "1.2.0")] internal class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger { get; private set; } protected Plugin() { Logger = ((BaseUnityPlugin)this).Logger; } protected void Awake() { ManualLogSource logger = Logger; if (logger != null) { logger.LogInfo((object)"Plugin LCMaxSoundsFix is loaded!"); } ManualLogSource logger2 = Logger; if (logger2 != null) { logger2.LogDebug((object)"Binding audio config..."); } AudioConfig.Bind((BaseUnityPlugin)(object)this); } } public static class PluginInfo { public const string PLUGIN_GUID = "LCMaxSoundsFix"; public const string PLUGIN_NAME = "LCMaxSoundsFix"; public const string PLUGIN_VERSION = "1.2.0"; } }