using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BoneLib.BoneMenu;
using MelonLoader;
using MelonLoader.Preferences;
using Microsoft.CodeAnalysis;
using TextureStreamingBudget;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Core), "TextureStreamingBudget", "1.0.0", "Zer0Bytes", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("TextureStreamingBudget")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("TextureStreamingBudget")]
[assembly: AssemblyTitle("TextureStreamingBudget")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.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 TextureStreamingBudget
{
public class Core : MelonMod
{
private static MelonPreferences_Category MainCategory;
public static bool IsQuest => (int)Application.platform == 11;
public override void OnInitializeMelon()
{
((MelonBase)this).LoggerInstance.Msg("Initialized.");
SetupConfig();
}
public override void OnUpdate()
{
}
private static void SetupConfig()
{
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
MainCategory = MelonPreferences.CreateCategory("TextureStreamingBudget");
MelonPreferences_Entry<bool> StreamingBudgetEnabledPref = MainCategory.CreateEntry<bool>("TextureStreaming", QualitySettings.streamingMipmapsActive, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
QualitySettings.streamingMipmapsActive = StreamingBudgetEnabledPref.Value;
MelonPreferences_Entry<float> StreamingBudgetPref = MainCategory.CreateEntry<float>("TextureStreamingBudget", 3072f, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
QualitySettings.streamingMipmapsMemoryBudget = StreamingBudgetPref.Value;
float num = Mathf.Min((float)SystemInfo.graphicsMemorySize * 0.5f, (float)SystemInfo.systemMemorySize * 0.75f);
Page val = Page.Root.CreatePage("Texture Streaming Budget", Color.cyan, 0, true);
BoolElement Bool1 = null;
Bool1 = val.CreateBool("Texture Streaming", StreamingBudgetEnabledPref.DefaultValue ? Color.green : Color.red, StreamingBudgetEnabledPref.DefaultValue, (Action<bool>)delegate(bool value)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
QualitySettings.streamingMipmapsActive = value;
((Element)Bool1).ElementColor = (value ? Color.green : Color.red);
UpdatePreferenceAndSave(StreamingBudgetEnabledPref, value);
});
val.CreateFloat("Texture Streaming Budget (MB)", Color.cyan, StreamingBudgetPref.DefaultValue, 64f, 0f, num, (Action<float>)delegate(float value)
{
QualitySettings.streamingMipmapsMemoryBudget = value;
UpdatePreferenceAndSave(StreamingBudgetPref, value);
});
}
private static void UpdatePreferenceAndSave<T>(MelonPreferences_Entry<T> preference, T value)
{
preference.Value = value;
MainCategory.SaveToFile(false);
}
}
}