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 BonelabFSR;
using MelonLoader;
using MelonLoader.Preferences;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.Rendering.Universal;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: MelonInfo(typeof(Core), "Bonelab FSR", "1.0.0", "Elijoe", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("Bonelab_FSR")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Bonelab_FSR")]
[assembly: AssemblyTitle("Bonelab_FSR")]
[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 BonelabFSR
{
public class Core : MelonMod
{
public static string PrefName = "FSR";
public static string SharpnessOveride = "OverideSharpness";
public static string SharpnessName = "Sharpness";
public static string FSREnabled = "Enabled";
public static Instance FSRLogger = Melon<Core>.Logger;
public static MelonPreferences_Entry<bool> EnabledEntry;
public static MelonPreferences_Entry<bool> OverideEntry;
public static MelonPreferences_Entry<float> SharpnessEntry;
public override void OnInitializeMelon()
{
SetUpMelonPrefs();
CreateMenu();
}
public override void OnSceneWasInitialized(int buildIndex, string sceneName)
{
((MelonMod)this).OnSceneWasInitialized(buildIndex, sceneName);
ReapplyFSR();
}
public static void UpdateFSR(bool enabled, float sharpness, bool overide)
{
UniversalRenderPipelineAsset asset = UniversalRenderPipeline.asset;
if (enabled)
{
asset.upscalingFilter = (UpscalingFilterSelection)3;
}
else
{
asset.upscalingFilter = (UpscalingFilterSelection)0;
}
asset.fsrOverrideSharpness = overide;
if (overide)
{
asset.fsrSharpness = sharpness;
}
EnabledEntry.Value = enabled;
SharpnessEntry.Value = sharpness;
OverideEntry.Value = overide;
MelonPreferences.SaveCategory<float>(PrefName, true);
MelonPreferences.Save();
}
public static void CreateMenu()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
Page val = Page.Root.CreatePage("FSR", Color.red, 0, true);
val.CreateBool("FSR Enabled", Color.white, EnabledEntry.Value, (Action<bool>)delegate(bool value)
{
UpdateFSR(value, SharpnessEntry.Value, OverideEntry.Value);
});
val.CreateBool("Override Sharpness", Color.white, OverideEntry.Value, (Action<bool>)delegate(bool value)
{
UpdateFSR(EnabledEntry.Value, SharpnessEntry.Value, value);
});
val.CreateFloat("Sharpness", Color.white, SharpnessEntry.Value, 0.1f, 0f, 1f, (Action<float>)delegate(float value)
{
UpdateFSR(EnabledEntry.Value, value, OverideEntry.Value);
});
val.CreateFunction("Reapply FSR", Color.green, (Action)ReapplyFSR);
}
private static void ReapplyFSR()
{
UpdateFSR(EnabledEntry.Value, SharpnessEntry.Value, OverideEntry.Value);
}
private static void SetUpMelonPrefs()
{
if (!MelonPreferences.HasEntry(PrefName, SharpnessName))
{
FSRLogger.Msg("No prefs found! Generating!");
MelonPreferences.CreateCategory(PrefName);
EnabledEntry = MelonPreferences.CreateEntry<bool>(PrefName, FSREnabled, false, (string)null, (string)null, false, false, (ValueValidator)null);
OverideEntry = MelonPreferences.CreateEntry<bool>(PrefName, SharpnessOveride, false, (string)null, (string)null, false, false, (ValueValidator)null);
SharpnessEntry = MelonPreferences.CreateEntry<float>(PrefName, SharpnessName, 1f, (string)null, (string)null, false, false, (ValueValidator)null);
MelonPreferences.Save();
}
else
{
EnabledEntry = MelonPreferences.GetEntry<bool>(PrefName, FSREnabled);
OverideEntry = MelonPreferences.GetEntry<bool>(PrefName, SharpnessOveride);
SharpnessEntry = MelonPreferences.GetEntry<float>(PrefName, SharpnessName);
}
}
}
}