using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using UnityEngine;
using Zorro.Settings;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("Zoomies PEAK Edition")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Zoomies PEAK Edition")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e1c61817-1f54-47fa-83d1-f6f2020f561b")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace ZoomiesMod;
[BepInPlugin("Rissoe.ZoomiesPEAK", "Zoomies PEAK Edition", "1.0.0")]
public class ZoomiesInfo : BaseUnityPlugin
{
public const string modGUID = "Rissoe.ZoomiesPEAK";
public const string modName = "Zoomies PEAK Edition";
public const string modVersion = "1.0.0";
public static ConfigEntry<string> ZoomiesKey;
public static KeyCode ZoomiesKeyCode;
private readonly Harmony harmony = new Harmony("Rissoe.ZoomiesPEAK");
private void Awake()
{
ZoomiesKey = ((BaseUnityPlugin)this).Config.Bind<string>("General", "Zoom Key", "c", "");
if (Enum.TryParse<KeyCode>(ZoomiesKey.Value, out KeyCode _))
{
ZoomiesKey.Value = "c";
}
harmony.PatchAll(typeof(ZoomiesFOV));
Debug.Log((object)"Zoomies PEAK Edition zoomed in!");
}
}
[HarmonyPatch(typeof(MainCameraMovement))]
public class ZoomiesFOV
{
internal static float FOV;
internal static float ZOOM;
internal static float CURRENT;
internal static Camera Cam;
internal static FieldInfo Field1 = typeof(MainCameraMovement).GetField("cam", BindingFlags.Instance | BindingFlags.NonPublic);
[HarmonyPatch("GetFov")]
[HarmonyPrefix]
public static bool FovFix(MainCameraMovement __instance, ref float __result)
{
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)Character.localCharacter == (Object)null)
{
return true;
}
if ((Object)(object)Cam == (Object)null)
{
FOV = ((FloatSetting)GameHandler.Instance.SettingsHandler.GetSetting<FovSetting>()).Value;
ZOOM = FOV / 3f;
Cam = ((Component)(MainCamera)Field1.GetValue(__instance)).GetComponent<Camera>();
}
if (UnityInput.Current.GetKey(ZoomiesInfo.ZoomiesKey.Value))
{
CURRENT += (ZOOM - CURRENT) / 6f;
ZOOM -= UnityInput.Current.mouseScrollDelta.y * 2.5f;
ZOOM = Mathf.Clamp(ZOOM, 10f, FOV);
}
else
{
ZOOM = FOV / 3f;
CURRENT += (FOV - CURRENT) / 6f;
}
__result = CURRENT;
return false;
}
}