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 InRunArtifacts v1.0.1
InRunArtifacts.dll
Decompiled 10 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Microsoft.CodeAnalysis; using RoR2; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("InRunArtifacts")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1")] [assembly: AssemblyProduct("InRunArtifacts")] [assembly: AssemblyTitle("InRunArtifacts")] [assembly: AssemblyVersion("1.0.1.0")] [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 InRunArtifacts { internal static class ArtifactToggleManager { private sealed class ArtifactIconEntry { internal ArtifactDef Artifact; internal Image CardImage; internal Image IconImage; internal Outline Border; internal HGTextMeshProUGUI StatusLabel; internal ArtifactHoverHandler HoverHandler; } private static readonly Dictionary<ArtifactDef, bool> PendingStates = new Dictionary<ArtifactDef, bool>(); private static readonly List<ArtifactDef> Artifacts = new List<ArtifactDef>(); private static readonly List<ArtifactIconEntry> IconEntries = new List<ArtifactIconEntry>(); private static InRunArtifactsPlugin _plugin; private static ConfigEntry<KeyCode> _menuKey; private static GameObject _root; private static MPEventSystem _eventSystem; private static bool _cursorOpened; private static bool _paused; private static float _previousTimeScale = 1f; private static HGTextMeshProUGUI _hoverTitle; private static HGTextMeshProUGUI _hoverBody; private static HGTextMeshProUGUI _pendingLabel; internal static bool IsMenuOpen => Object.op_Implicit((Object)(object)_root); private static string T(string chinese, string english) { if (!(Language.currentLanguage?.name ?? "en").StartsWith("zh", StringComparison.OrdinalIgnoreCase)) { return english; } return chinese; } internal static void Initialize(InRunArtifactsPlugin plugin) { _plugin = plugin; _menuKey = ((BaseUnityPlugin)plugin).Config.Bind<KeyCode>("神器管理", "打开菜单快捷键", (KeyCode)288, "在一局游戏中打开神器开关菜单。修改会在进入下一张地图前生效。"); Stage.onServerStageComplete += OnServerStageComplete; Run.onRunDestroyGlobal += OnRunDestroy; } internal static void Shutdown() { Stage.onServerStageComplete -= OnServerStageComplete; Run.onRunDestroyGlobal -= OnRunDestroy; PendingStates.Clear(); CloseMenu(); _plugin = null; } internal static void Update() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (_menuKey == null) { return; } if (Object.op_Implicit((Object)(object)_root) && Input.GetKeyDown((KeyCode)27)) { CloseMenu(); } else if (Input.GetKeyDown(_menuKey.Value)) { if (Object.op_Implicit((Object)(object)_root)) { CloseMenu(); } else { TryOpenMenu(); } } } private static void TryOpenMenu() { if (!NetworkServer.active || (Object)(object)Run.instance == (Object)null || (Object)(object)RunArtifactManager.instance == (Object)null) { Chat.AddMessage(T("神器管理只能由房主在一局游戏中使用。", "Only the host can manage artifacts during a run.")); return; } if (Time.timeScale <= 0f) { Chat.AddMessage(T("请先关闭当前暂停或选择界面。", "Close the current pause or selection menu first.")); return; } RefreshArtifactList(); if (Artifacts.Count == 0) { Chat.AddMessage(T("没有找到可管理的神器。", "No artifacts found.")); } else { ShowMenu(); } } private static void RefreshArtifactList() { Artifacts.Clear(); for (int i = 0; i < ArtifactCatalog.artifactCount; i++) { ArtifactDef artifactDef = ArtifactCatalog.GetArtifactDef((ArtifactIndex)i); if (Object.op_Implicit((Object)(object)artifactDef)) { Artifacts.Add(artifactDef); } } Artifacts.Sort((ArtifactDef left, ArtifactDef right) => string.Compare(Language.GetString(left.nameToken), Language.GetString(right.nameToken), StringComparison.CurrentCulture)); } private static void ShowMenu() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); if (firstLocalUser == null || (Object)(object)firstLocalUser.eventSystem == (Object)null) { Chat.AddMessage(T("暂时无法打开神器管理界面。", "The artifact menu is currently unavailable.")); return; } _root = UiFactory.CreateOverlay("InRunArtifactsMenu", new Vector2(0.05f, 0.07f), new Vector2(0.95f, 0.93f), out var panel); UiFactory.Stretch(((TMP_Text)UiFactory.CreateText("标题", (Transform)(object)panel, T("神器管理", "Artifact Manager"), 38f, Color.white, (TextAlignmentOptions)514)).rectTransform, new Vector2(0.04f, 0.91f), new Vector2(0.96f, 0.98f), Vector2.zero, Vector2.zero); UiFactory.Stretch(((TMP_Text)UiFactory.CreateText("说明", (Transform)(object)panel, T("点击图标切换下关状态 · 亮色为开启,灰色为关闭 · 鼠标悬停查看效果", "Click to toggle next stage · Bright: ON / Gray: OFF · Hover for details"), 18f, UiFactory.MutedTextColor, (TextAlignmentOptions)514)).rectTransform, new Vector2(0.04f, 0.865f), new Vector2(0.96f, 0.91f), Vector2.zero, Vector2.zero); CreateHoverPanel(panel); CreateArtifactGrid(panel); CreateFooter(panel); _eventSystem = firstLocalUser.eventSystem; if (Object.op_Implicit((Object)(object)_eventSystem)) { MPEventSystem eventSystem = _eventSystem; int cursorOpenerCount = eventSystem.cursorOpenerCount; eventSystem.cursorOpenerCount = cursorOpenerCount + 1; MPEventSystem eventSystem2 = _eventSystem; cursorOpenerCount = eventSystem2.cursorOpenerForGamepadCount; eventSystem2.cursorOpenerForGamepadCount = cursorOpenerCount + 1; _cursorOpened = true; } PauseGame(); InRunArtifactsPlugin.Log.LogInfo((object)$"[神器管理] 单页菜单已打开,共载入 {Artifacts.Count} 个神器。"); } private static void CreateHoverPanel(RectTransform panel) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_00f7: 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_0125: Unknown result type (might be due to invalid IL or missing references) //IL_014d: 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_0166: Unknown result type (might be due to invalid IL or missing references) GameObject val = UiFactory.CreateRect("悬停说明", (Transform)(object)panel); UiFactory.Stretch(val.GetComponent<RectTransform>(), new Vector2(0.08f, 0.72f), new Vector2(0.92f, 0.85f), Vector2.zero, Vector2.zero); ((Graphic)val.AddComponent<Image>()).color = new Color(0.035f, 0.05f, 0.085f, 0.92f); Outline obj = val.AddComponent<Outline>(); ((Shadow)obj).effectColor = new Color(0.24f, 0.38f, 0.52f, 0.7f); ((Shadow)obj).effectDistance = new Vector2(1f, -1f); _hoverTitle = UiFactory.CreateText("神器名称", val.transform, T("将鼠标放到神器图标上查看详情", "Hover over an artifact for details"), 23f, UiFactory.GoldColor, (TextAlignmentOptions)513); UiFactory.Stretch(((TMP_Text)_hoverTitle).rectTransform, new Vector2(0.03f, 0.55f), new Vector2(0.97f, 0.94f), Vector2.zero, Vector2.zero); _hoverBody = UiFactory.CreateText("神器效果", val.transform, T("点击图标只修改下一张地图的状态,本关不会立刻改变。", "Changes apply next stage, not the current stage."), 17f, Color.white, (TextAlignmentOptions)513); UiFactory.Stretch(((TMP_Text)_hoverBody).rectTransform, new Vector2(0.03f, 0.08f), new Vector2(0.97f, 0.58f), Vector2.zero, Vector2.zero); } private static void CreateArtifactGrid(RectTransform panel) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) GameObject val = UiFactory.CreateRect("神器图标网格", (Transform)(object)panel); UiFactory.Stretch(val.GetComponent<RectTransform>(), new Vector2(0.05f, 0.19f), new Vector2(0.95f, 0.7f), Vector2.zero, Vector2.zero); int num = Mathf.Min(9, Mathf.Max(1, Artifacts.Count)); int num2 = Mathf.CeilToInt((float)Artifacts.Count / (float)num); float num3 = ((num2 <= 2) ? 154f : ((num2 == 3) ? 124f : 98f)); float num4 = Mathf.Min(126f, num3 - 12f); GridLayoutGroup obj = val.AddComponent<GridLayoutGroup>(); obj.constraint = (Constraint)1; obj.constraintCount = num; obj.cellSize = new Vector2(num4, num3); obj.spacing = new Vector2(14f, 12f); ((LayoutGroup)obj).childAlignment = (TextAnchor)4; obj.startAxis = (Axis)0; IconEntries.Clear(); foreach (ArtifactDef artifact in Artifacts) { CreateArtifactIcon(val.transform, artifact); } } private static void CreateArtifactIcon(Transform parent, ArtifactDef artifactDef) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Expected O, but got Unknown GameObject val = UiFactory.CreateRect(Language.GetString(artifactDef.nameToken), parent); Image val2 = val.AddComponent<Image>(); Outline val3 = val.AddComponent<Outline>(); ((Shadow)val3).effectDistance = new Vector2(2f, -2f); MPButton obj = UiFactory.CreateButton(val, val2); GameObject obj2 = UiFactory.CreateRect("图标", val.transform); UiFactory.Stretch(obj2.GetComponent<RectTransform>(), new Vector2(0.1f, 0.2f), new Vector2(0.9f, 0.95f), Vector2.zero, Vector2.zero); Image val4 = obj2.AddComponent<Image>(); val4.preserveAspect = true; ((Graphic)val4).raycastTarget = false; HGTextMeshProUGUI val5 = UiFactory.CreateText("状态", val.transform, string.Empty, 15f, Color.white, (TextAlignmentOptions)514); UiFactory.Stretch(((TMP_Text)val5).rectTransform, new Vector2(0.03f, 0.02f), new Vector2(0.97f, 0.2f), Vector2.zero, Vector2.zero); ArtifactHoverHandler artifactHoverHandler = val.AddComponent<ArtifactHoverHandler>(); ArtifactIconEntry entry = new ArtifactIconEntry { Artifact = artifactDef, CardImage = val2, IconImage = val4, Border = val3, StatusLabel = val5, HoverHandler = artifactHoverHandler }; IconEntries.Add(entry); ((UnityEvent)((Button)obj).onClick).AddListener((UnityAction)delegate { ToggleArtifact(entry); }); artifactHoverHandler.OnEnter = delegate { ShowArtifactDescription(entry); }; artifactHoverHandler.OnExit = ShowDefaultDescription; RefreshIconEntry(entry); } private static void CreateFooter(RectTransform panel) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) _pendingLabel = UiFactory.CreateText("待应用数量", (Transform)(object)panel, string.Empty, 18f, UiFactory.MutedTextColor, (TextAlignmentOptions)513); UiFactory.Stretch(((TMP_Text)_pendingLabel).rectTransform, new Vector2(0.06f, 0.08f), new Vector2(0.43f, 0.16f), Vector2.zero, Vector2.zero); CreateFooterButton(panel, T("撤销全部修改", "Undo all"), new Vector2(0.48f, 0.065f), new Vector2(0.69f, 0.155f), new Color(0.18f, 0.22f, 0.29f, 1f), ClearPendingChanges); CreateFooterButton(panel, T("完成(下关生效)", "Done (next stage)"), new Vector2(0.71f, 0.065f), new Vector2(0.94f, 0.155f), new Color(0.12f, 0.48f, 0.56f, 1f), CloseMenu); RefreshPendingLabel(); } private static void CreateFooterButton(RectTransform panel, string label, Vector2 anchorMin, Vector2 anchorMax, Color color, Action action) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) GameObject val = UiFactory.CreateRect(label, (Transform)(object)panel); UiFactory.Stretch(val.GetComponent<RectTransform>(), anchorMin, anchorMax, Vector2.zero, Vector2.zero); Image val2 = val.AddComponent<Image>(); ((Graphic)val2).color = color; Outline obj = val.AddComponent<Outline>(); ((Shadow)obj).effectColor = new Color(1f, 1f, 1f, 0.2f); ((Shadow)obj).effectDistance = new Vector2(1f, -1f); ((UnityEvent)((Button)UiFactory.CreateButton(val, val2)).onClick).AddListener((UnityAction)delegate { action(); }); UiFactory.Stretch(((TMP_Text)UiFactory.CreateText("文字", val.transform, label, 19f, Color.white, (TextAlignmentOptions)514)).rectTransform, Vector2.zero, Vector2.one, new Vector2(8f, 4f), new Vector2(-8f, -4f)); } private static void ToggleArtifact(ArtifactIconEntry entry) { if (entry != null && Object.op_Implicit((Object)(object)entry.Artifact) && !((Object)(object)RunArtifactManager.instance == (Object)null)) { bool flag = RunArtifactManager.instance.IsArtifactEnabled(entry.Artifact); bool flag2 = !GetTargetState(entry.Artifact, flag); if (flag2 == flag) { PendingStates.Remove(entry.Artifact); } else { PendingStates[entry.Artifact] = flag2; } RefreshIconEntry(entry); RefreshPendingLabel(); ShowArtifactDescription(entry); } } private static bool GetTargetState(ArtifactDef artifactDef, bool currentState) { if (!PendingStates.TryGetValue(artifactDef, out var value)) { return currentState; } return value; } private static void RefreshIconEntry(ArtifactIconEntry entry) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) bool flag = RunArtifactManager.instance.IsArtifactEnabled(entry.Artifact); bool targetState = GetTargetState(entry.Artifact, flag); bool flag2 = targetState != flag; Sprite val = (targetState ? entry.Artifact.smallIconSelectedSprite : entry.Artifact.smallIconDeselectedSprite); entry.IconImage.sprite = (Object.op_Implicit((Object)(object)val) ? val : entry.Artifact.smallIconSelectedSprite); ((Graphic)entry.IconImage).color = (Color)(targetState ? Color.white : new Color(0.34f, 0.36f, 0.4f, 0.78f)); ((Graphic)entry.CardImage).color = (targetState ? new Color(0.1f, 0.12f, 0.16f, 1f) : new Color(0.035f, 0.045f, 0.06f, 0.92f)); ((Shadow)entry.Border).effectColor = (Color)(flag2 ? UiFactory.CyanColor : (targetState ? UiFactory.GoldColor : new Color(0.28f, 0.3f, 0.34f, 0.7f))); ((TMP_Text)entry.StatusLabel).text = ((!flag2) ? (targetState ? T("开启", "ON") : T("关闭", "OFF")) : (targetState ? T("下关:开启 *", "Next: ON *") : T("下关:关闭 *", "Next: OFF *"))); ((Graphic)entry.StatusLabel).color = (targetState ? new Color(0.55f, 0.94f, 0.66f, 1f) : new Color(0.58f, 0.61f, 0.67f, 1f)); } private static void ShowArtifactDescription(ArtifactIconEntry entry) { if (Object.op_Implicit((Object)(object)_hoverTitle) && Object.op_Implicit((Object)(object)_hoverBody) && entry != null && Object.op_Implicit((Object)(object)entry.Artifact)) { bool currentState = RunArtifactManager.instance.IsArtifactEnabled(entry.Artifact); bool targetState = GetTargetState(entry.Artifact, currentState); ((TMP_Text)_hoverTitle).text = Language.GetString(entry.Artifact.nameToken) + " · " + T("下关:", "Next: ") + (targetState ? T("开启", "ON") : T("关闭", "OFF")); ((TMP_Text)_hoverBody).text = Language.GetString(entry.Artifact.descriptionToken); } } private static void ShowDefaultDescription() { if (Object.op_Implicit((Object)(object)_hoverTitle) && Object.op_Implicit((Object)(object)_hoverBody)) { ((TMP_Text)_hoverTitle).text = T("将鼠标放到神器图标上查看详情", "Hover over an artifact for details"); ((TMP_Text)_hoverBody).text = T("点击图标只修改下一张地图的状态,本关不会立刻改变。", "Changes apply next stage, not the current stage."); } } private static void RefreshPendingLabel() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)_pendingLabel)) { ((TMP_Text)_pendingLabel).text = ((PendingStates.Count > 0) ? string.Format(T("待应用修改:{0} 项", "Pending changes: {0}"), PendingStates.Count) : T("尚未修改任何神器", "No pending changes")); ((Graphic)_pendingLabel).color = ((PendingStates.Count > 0) ? UiFactory.CyanColor : UiFactory.MutedTextColor); } } private static void ClearPendingChanges() { PendingStates.Clear(); foreach (ArtifactIconEntry iconEntry in IconEntries) { RefreshIconEntry(iconEntry); } RefreshPendingLabel(); ShowDefaultDescription(); } private static void OnServerStageComplete(Stage stage) { if (!NetworkServer.active || PendingStates.Count == 0 || (Object)(object)RunArtifactManager.instance == (Object)null) { return; } int num = 0; foreach (KeyValuePair<ArtifactDef, bool> pendingState in PendingStates) { if (Object.op_Implicit((Object)(object)pendingState.Key)) { RunArtifactManager.instance.SetArtifactEnabledServer(pendingState.Key, pendingState.Value); num++; } } PendingStates.Clear(); Chat.AddMessage(string.Format(T("已应用 {0} 项神器修改,将在下一张地图生效。", "Applied {0} artifact changes for the next stage."), num)); InRunArtifactsPlugin.Log.LogInfo((object)$"[神器管理] 关卡结束时应用了 {num} 项修改。"); } private static void OnRunDestroy(Run run) { PendingStates.Clear(); CloseMenu(); } private static void PauseGame() { if (!_paused) { _previousTimeScale = Time.timeScale; Time.timeScale = 0f; _paused = true; } } private static void ResumeGame() { if (_paused) { Time.timeScale = ((_previousTimeScale > 0f) ? _previousTimeScale : 1f); _paused = false; } } private static void CloseMenu() { if (_cursorOpened && Object.op_Implicit((Object)(object)_eventSystem)) { _eventSystem.cursorOpenerCount = Mathf.Max(0, _eventSystem.cursorOpenerCount - 1); _eventSystem.cursorOpenerForGamepadCount = Mathf.Max(0, _eventSystem.cursorOpenerForGamepadCount - 1); } _cursorOpened = false; _eventSystem = null; IconEntries.Clear(); _hoverTitle = null; _hoverBody = null; _pendingLabel = null; if (Object.op_Implicit((Object)(object)_root)) { Object.Destroy((Object)(object)_root); } _root = null; ResumeGame(); } } internal sealed class ArtifactHoverHandler : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { internal Action OnEnter; internal Action OnExit; public void OnPointerEnter(PointerEventData eventData) { OnEnter?.Invoke(); } public void OnPointerExit(PointerEventData eventData) { OnExit?.Invoke(); } } [BepInPlugin("com.lml.inrunartifacts", "In Run Artifacts", "1.0.1")] public sealed class InRunArtifactsPlugin : BaseUnityPlugin { public const string PluginGUID = "com.lml.inrunartifacts"; internal static ManualLogSource Log; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; ArtifactToggleManager.Initialize(this); Log.LogInfo((object)"局内神器管理 1.0.1 已加载,快捷键 F7。"); } private void Update() { ArtifactToggleManager.Update(); } private void OnDestroy() { ArtifactToggleManager.Shutdown(); } } internal static class UiFactory { internal static readonly Color PanelColor = new Color(0.025f, 0.035f, 0.065f, 0.98f); internal static readonly Color CardColor = new Color(0.055f, 0.075f, 0.115f, 0.98f); internal static readonly Color GoldColor = new Color(0.88f, 0.7f, 0.28f, 1f); internal static readonly Color CyanColor = new Color(0.3f, 0.82f, 0.92f, 1f); internal static readonly Color MutedTextColor = new Color(0.68f, 0.72f, 0.8f, 1f); internal static GameObject CreateOverlay(string name, Vector2 panelAnchorMin, Vector2 panelAnchorMax, out RectTransform panel) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name, new Type[4] { typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster) }); val.layer = 5; Canvas component = val.GetComponent<Canvas>(); component.renderMode = (RenderMode)0; component.sortingOrder = 30000; CanvasScaler component2 = val.GetComponent<CanvasScaler>(); component2.uiScaleMode = (ScaleMode)1; component2.referenceResolution = new Vector2(1920f, 1080f); component2.matchWidthOrHeight = 0.5f; GameObject obj = CreateRect("背景遮罩", val.transform); Stretch(obj.GetComponent<RectTransform>(), Vector2.zero, Vector2.one, Vector2.zero, Vector2.zero); ((Graphic)obj.AddComponent<Image>()).color = new Color(0f, 0f, 0f, 0.78f); GameObject val2 = CreateRect("主面板", val.transform); panel = val2.GetComponent<RectTransform>(); Stretch(panel, panelAnchorMin, panelAnchorMax, Vector2.zero, Vector2.zero); ((Graphic)val2.AddComponent<Image>()).color = PanelColor; Outline obj2 = val2.AddComponent<Outline>(); ((Shadow)obj2).effectColor = new Color(GoldColor.r, GoldColor.g, GoldColor.b, 0.75f); ((Shadow)obj2).effectDistance = new Vector2(2f, -2f); return val; } internal static GameObject CreateRect(string name, Transform parent) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown GameObject val = new GameObject(name, new Type[1] { typeof(RectTransform) }) { layer = 5 }; val.transform.SetParent(parent, false); return val; } internal static HGTextMeshProUGUI CreateText(string name, Transform parent, string text, float fontSize, Color color, TextAlignmentOptions alignment = (TextAlignmentOptions)514) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) HGTextMeshProUGUI obj = CreateRect(name, parent).AddComponent<HGTextMeshProUGUI>(); ((TMP_Text)obj).text = text; ((TMP_Text)obj).fontSize = fontSize; ((Graphic)obj).color = color; ((TMP_Text)obj).alignment = alignment; ((TMP_Text)obj).enableWordWrapping = true; ((Graphic)obj).raycastTarget = false; return obj; } internal static MPButton CreateButton(GameObject gameObject, Image targetGraphic) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0063: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) MPButton obj = gameObject.AddComponent<MPButton>(); obj.allowAllEventSystems = true; ((Selectable)obj).targetGraphic = (Graphic)(object)targetGraphic; ((Selectable)obj).transition = (Transition)1; ColorBlock defaultColorBlock = ColorBlock.defaultColorBlock; ((ColorBlock)(ref defaultColorBlock)).normalColor = Color.white; ((ColorBlock)(ref defaultColorBlock)).highlightedColor = new Color(1.12f, 1.12f, 1.12f, 1f); ((ColorBlock)(ref defaultColorBlock)).pressedColor = new Color(0.78f, 0.86f, 0.92f, 1f); ((ColorBlock)(ref defaultColorBlock)).selectedColor = ((ColorBlock)(ref defaultColorBlock)).highlightedColor; ((ColorBlock)(ref defaultColorBlock)).disabledColor = new Color(0.42f, 0.42f, 0.42f, 0.65f); ((ColorBlock)(ref defaultColorBlock)).fadeDuration = 0.16f; ((Selectable)obj).colors = defaultColorBlock; return obj; } internal static void Stretch(RectTransform rect, Vector2 anchorMin, Vector2 anchorMax, Vector2 offsetMin, Vector2 offsetMax) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: 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) //IL_0016: Unknown result type (might be due to invalid IL or missing references) rect.anchorMin = anchorMin; rect.anchorMax = anchorMax; rect.offsetMin = offsetMin; rect.offsetMax = offsetMax; } } }