using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("REPO_HD")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("REPO_HD")]
[assembly: AssemblyCopyright("Copyright © BlueAmulet 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("a9533aec-df57-4f5d-80ac-8f782ee8883c")]
[assembly: AssemblyFileVersion("1.0.3")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.3.0")]
[module: UnverifiableCode]
namespace REPO_HD
{
[BepInPlugin("BlueAmulet.REPO_HD", "REPO_HD", "1.0.3")]
public class REPO_HD : BaseUnityPlugin
{
internal const string Name = "REPO_HD";
internal const string Author = "BlueAmulet";
internal const string ID = "BlueAmulet.REPO_HD";
internal const string Version = "1.0.3";
internal static ManualLogSource Log;
public void Awake()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
Log = ((BaseUnityPlugin)this).Logger;
Settings.InitConfig(((BaseUnityPlugin)this).Config);
Harmony val = new Harmony("BlueAmulet.REPO_HD");
((BaseUnityPlugin)this).Logger.LogInfo((object)"Applying Harmony patches");
val.PatchAll(Assembly.GetExecutingAssembly());
int num = 0;
foreach (MethodBase patchedMethod in val.GetPatchedMethods())
{
((BaseUnityPlugin)this).Logger.LogInfo((object)("Patched " + patchedMethod.DeclaringType.Name + "." + patchedMethod.Name));
num++;
}
((BaseUnityPlugin)this).Logger.LogInfo((object)(num + " patches applied"));
}
}
internal static class Settings
{
internal static ConfigEntry<bool> AntiAliasing;
internal static ConfigEntry<float> ResolutionScale;
internal static ConfigEntry<bool> FlickerFix;
public static void InitConfig(ConfigFile config)
{
AntiAliasing = config.Bind<bool>("REPO_HD", "AntiAliasing", true, "Apply TAA+SMAA antialiasing to the game");
ResolutionScale = config.Bind<float>("REPO_HD", "ResolutionScale", 1f, "Resolution scaler");
FlickerFix = config.Bind<bool>("REPO_HD", "FlickerFix", true, "Fix flickering text on extraction points");
}
}
}
namespace REPO_HD.Patches
{
[HarmonyPatch(typeof(ExtractionPoint))]
internal static class ExtractionPointPatch
{
[HarmonyPrefix]
[HarmonyPatch("Start")]
public static void PrefixStart(ref ExtractionPoint __instance)
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (Settings.FlickerFix.Value)
{
REPO_HD.Log.LogInfo((object)"Fixing extraction point text flicker");
Transform transform = __instance.haulGoalScreen.transform;
transform.localPosition += new Vector3(0f, 0f, -0.002f);
}
}
}
[HarmonyPatch(typeof(GraphicsManager))]
internal static class GraphicsPatch
{
[HarmonyPrefix]
[HarmonyPatch("UpdateRenderSize")]
public static bool PrefixUpdateRenderSize()
{
return false;
}
}
[HarmonyPatch(typeof(RenderTextureMain))]
internal static class RenderTexturePatch
{
[HarmonyPostfix]
[HarmonyPatch("Start")]
public static void PostfixStart(ref RenderTextureMain __instance)
{
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
if (!Settings.AntiAliasing.Value)
{
return;
}
for (int i = 0; i < __instance.cameras.Count; i++)
{
Camera val = __instance.cameras[i];
PostProcessLayer component = ((Component)val).GetComponent<PostProcessLayer>();
if ((Object)(object)component != (Object)null)
{
if (i == 0)
{
component.antialiasingMode = (Antialiasing)3;
REPO_HD.Log.LogInfo((object)$"Enabled TAA on {val}");
}
else
{
component.antialiasingMode = (Antialiasing)2;
REPO_HD.Log.LogInfo((object)$"Enabled SMAA on {val}");
}
}
}
}
[HarmonyPrefix]
[HarmonyPatch("Update")]
public static void PrefixUpdate(ref RenderTextureMain __instance)
{
__instance.textureWidthOriginal = Math.Max(Mathf.RoundToInt((float)Screen.width * Settings.ResolutionScale.Value), 1);
__instance.textureHeightOriginal = Math.Max(Mathf.RoundToInt((float)Screen.height * Settings.ResolutionScale.Value), 1);
}
}
}