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 MenuLibFix v1.0.1
MenuLibFix.dll
Decompiled a day 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.Logging; using HarmonyLib; using MenuLib; using MenuLib.MonoBehaviors; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("MenuLib")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("cat7street")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("MenuLibFix —— MenuLib 2.5.4 在 2026-09 版本 R.E.P.O. 上的兼容修复伴生插件")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1+e1852aea21f29b4c4f89517f9e7603e499359f38")] [assembly: AssemblyProduct("MenuLibFix")] [assembly: AssemblyTitle("MenuLibFix")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 MenuLibFix { [BepInPlugin("cat7street.MenuLibFix", "MenuLib Fix", "1.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MenuLibFixPlugin : BaseUnityPlugin { public const string GUID = "cat7street.MenuLibFix"; public const string NAME = "MenuLib Fix"; public const string VERSION = "1.0.1"; internal static ManualLogSource Logger; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Logger = ((BaseUnityPlugin)this).Logger; new Harmony("cat7street.MenuLibFix").PatchAll(); Logger.LogInfo((object)"MenuLib Fix v1.0.1 已加载:UIMouseHover / StateClosing / StateInactive 三钩子已用 Harmony 重挂"); } } [HarmonyPatch(typeof(SemiFunc), "UIMouseHover")] internal static class SemiFunc_UIMouseHover_Patch { private static string _lastHoverError; private static bool Prefix(MenuPage parentPage, RectTransform rectTransform, string menuID, float xPadding, float yPadding, MenuScrollBox scrollBox, ScrollRect scrollRect, ref bool __result) { try { return HoverImpl(parentPage, rectTransform, menuID, xPadding, yPadding, scrollBox, scrollRect, ref __result); } catch (Exception ex) { string text = ex.GetType().Name + ":" + ex.Message; if (text != _lastHoverError) { _lastHoverError = text; MenuLibFixPlugin.Logger.LogWarning((object)$"UIMouseHover 替代逻辑异常(按未悬停处理):{ex}"); } __result = false; return false; } } private static bool HoverImpl(MenuPage parentPage, RectTransform rectTransform, string menuID, float xPadding, float yPadding, MenuScrollBox scrollBox, ScrollRect scrollRect, ref bool __result) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)parentPage)) { __result = false; return false; } if (Object.op_Implicit((Object)(object)parentPage.parentPage) && !parentPage.parentPage.pageActive) { __result = false; return false; } Vector2 val = SemiFunc.UIMousePosToUIPos(); if (MenuManager.instance.mouseHoldPosition != Vector2.zero) { val = MenuManager.instance.mouseHoldPosition; } if (Object.op_Implicit((Object)(object)scrollBox)) { RectTransform val2 = ((!((Object)(object)scrollBox.scroller != (Object)null)) ? ((RectTransform)null) : ((RectTransform)((Transform)scrollBox.scroller).parent)); bool flag; if ((Object)(object)val2 != (Object)null) { float y = ((Transform)val2).position.y; float num = y + val2.sizeDelta.y; flag = val.y > y && val.y < num; } else { float num2 = ((Component)scrollBox).transform.position.y - 10f; float num3 = scrollBox.scrollerEndPosition + 32f; flag = val.y <= num3 && val.y >= num2; } if (!flag) { __result = false; return false; } } if (Object.op_Implicit((Object)(object)scrollRect)) { RectTransform val3 = scrollRect.viewport ?? ((Component)scrollRect).GetComponent<RectTransform>(); if (Object.op_Implicit((Object)(object)val3)) { rectTransform.GetWorldCorners(SemiFunc.s_RectCorners); val3.GetWorldCorners(SemiFunc.s_ViewportCorners); Vector3 val4 = SemiFunc.s_RectCorners[0]; Vector3 val5 = SemiFunc.s_RectCorners[2]; Vector3 val6 = SemiFunc.s_ViewportCorners[0]; Vector3 val7 = SemiFunc.s_ViewportCorners[2]; if (val5.y < val6.y || val4.y > val7.y || val5.x < val6.x || val4.x > val7.x) { __result = false; return false; } if (!RectTransformUtility.RectangleContainsScreenPoint(val3, val, (Camera)null)) { __result = false; return false; } } } MenuPage componentInParent = ((Component)rectTransform).GetComponentInParent<MenuPage>(); if ((Object)(object)componentInParent == (Object)null || (Object)(object)componentInParent.rectTransform == (Object)null) { __result = false; return false; } Vector2 val8 = SemiFunc.UIGetRectTransformPositionOnScreen(rectTransform, false); float x = val8.x; Rect rect = rectTransform.rect; float num4 = x + (((Rect)(ref rect)).xMin - xPadding); float x2 = val8.x; rect = rectTransform.rect; float num5 = x2 + (((Rect)(ref rect)).xMax + xPadding); float y2 = val8.y; rect = rectTransform.rect; float num6 = y2 + (((Rect)(ref rect)).yMin - yPadding); float y3 = val8.y; rect = rectTransform.rect; float num7 = y3 + (((Rect)(ref rect)).yMax + yPadding); bool flag2; if (val.x >= num4 && val.x <= num5 && val.y >= num6 && val.y <= num7) { flag2 = true; if (!string.IsNullOrEmpty(menuID) && menuID != "-1") { if (MenuManager.instance.currentMenuID == "") { MenuManager.instance.currentMenuID = menuID; MenuManager.instance.currentMenuIDTransform = (Transform)(object)rectTransform; } else if (MenuManager.instance.currentMenuID != menuID && SemiFunc.UIIsRenderedOnTop((Transform)(object)rectTransform, MenuManager.instance.currentMenuIDTransform)) { MenuManager.instance.currentMenuID = menuID; MenuManager.instance.currentMenuIDTransform = (Transform)(object)rectTransform; } } } else { flag2 = false; } if (!string.IsNullOrEmpty(menuID) && menuID != "-1") { __result = menuID == MenuManager.instance.currentMenuID; return false; } __result = flag2; return false; } } [HarmonyPatch(typeof(MenuPage), "StateClosing")] internal static class MenuPage_StateClosing_Patch { private static bool Prefix(MenuPage __instance) { //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown //IL_002f: 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) //IL_0039: 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) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) __instance.LockAndHide(); if (__instance.stateStart) { if (MenuAPI.customMenuPages.TryGetValue(__instance, out var value)) { RectTransform val = (RectTransform)((Component)__instance).transform; Vector2 animateAwayPosition = Vector2.op_Implicit(((Transform)val).position); Rect rect = val.rect; float num = 0f - ((Rect)(ref rect)).height; rect = value.rectTransform.rect; animateAwayPosition.y = num - ((Rect)(ref rect)).height; __instance.animateAwayPosition = animateAwayPosition; } if (!__instance.disableOutroEffect) { if (!__instance.popUpAnimation) { MenuManager.instance.MenuEffectPageOutro(); } else { MenuManager.instance.MenuEffectPopUpClose(); } } if ((Object)(object)MenuManager.instance.currentMenuPage == (Object)(object)__instance) { MenuManager.instance.currentMenuPage = null; MenuManager.instance.PageRemove(__instance); } } if (Vector2.Distance(Vector2.op_Implicit(((Transform)__instance.rectTransform).localPosition), __instance.animateAwayPosition) < 0.8f) { __instance.onPageEnd.Invoke(); if (MenuAPI.customMenuPages.TryGetValue(__instance, out var value2) && (value2.isCachedPage || !value2.pageWasActivatedOnce)) { ((Behaviour)__instance).enabled = false; } else { MenuManager.instance.PageRemove(__instance); Object.Destroy((Object)(object)((Component)__instance).gameObject); } } float deltaTime = Time.deltaTime; ((Transform)__instance.rectTransform).localPosition = Vector2.op_Implicit(Vector2.Lerp(Vector2.op_Implicit(((Transform)__instance.rectTransform).localPosition), __instance.animateAwayPosition, 40f * deltaTime)); return false; } } [HarmonyPatch(typeof(ChatManager), "StateInactive")] internal static class ChatManager_StateInactive_Patch { private static bool Prefix() { return !REPOInputStringSystem.hasAnyFocus; } } }