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 Empress Spawn Browser v3.0.0
EmpressSpawnBrowser.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using TMPro; using UnityEngine; using UnityEngine.AI; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Omniscye")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("3.0.0.0")] [assembly: AssemblyInformationalVersion("3.0.0+31d33a1e262fb9cd936a8fd3f583fdd7bc996e5a")] [assembly: AssemblyProduct("EmpressSpawnBrowser")] [assembly: AssemblyTitle("EmpressSpawnBrowser")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("3.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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 Empress.SpawnBrowser { [BepInPlugin("Empress.SpawnBrowser", "Spawn Browser", "3.0.0")] public class SpawnBrowser : BaseUnityPlugin { [HarmonyPatch] private static class Patch_CameraAim_Update { private static MethodBase TargetMethod() { return typeof(CameraAim).GetMethod("Update", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) ?? null; } private static bool Prefix() { return !UIActive; } } [HarmonyPatch] private static class Patch_EnemyOnScreen_GetOnScreen { private static MethodBase TargetMethod() { return typeof(EnemyOnScreen).GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).FirstOrDefault((MethodInfo method) => method.Name == "GetOnScreen" && method.GetParameters().Length == 1) ?? null; } private static void Finalizer(Exception __exception, ref bool __result) { if (__exception is KeyNotFoundException) { __result = false; } else if (__exception != null) { throw __exception; } } } private const int EnemyTab = 0; private const int ValuableTab = 1; private const int ItemTab = 2; private const int TeleportTab = 3; private static readonly string[] TabNames = new string[4] { "ENEMIES", "VALUABLES", "ITEMS", "TELEPORT" }; private static readonly string[] SearchHints = new string[4] { "Filter enemy setups...", "Filter valuables...", "Filter items and upgrades...", "Filter level points, rooms, or tags..." }; private static readonly Regex RxEnemyTrim = new Regex("^Enemy( -)?\\s*", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex RxValuableTrim = new Regex("^Valuable\\s*", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex RxItemTrim = new Regex("^Item\\s*", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static bool _uiVisible; private readonly List<string> _enemyNames = new List<string>(); private readonly List<string> _valuableNames = new List<string>(); private readonly List<string> _itemNames = new List<string>(); private readonly Dictionary<string, EnemySetup> _enemyByKey = new Dictionary<string, EnemySetup>(StringComparer.OrdinalIgnoreCase); private readonly Dictionary<string, PrefabRef> _valuableByKey = new Dictionary<string, PrefabRef>(StringComparer.OrdinalIgnoreCase); private readonly Dictionary<string, Item> _itemByKey = new Dictionary<string, Item>(StringComparer.OrdinalIgnoreCase); private readonly Color _bg = new Color(0.03f, 0.05f, 0.09f, 0.97f); private readonly Color _bg2 = new Color(0.07f, 0.1f, 0.16f, 0.96f); private readonly Color _surface = new Color(0.09f, 0.13f, 0.2f, 0.98f); private readonly Color _surfaceLift = new Color(0.13f, 0.19f, 0.29f, 0.99f); private readonly Color _surfaceSoft = new Color(0.18f, 0.26f, 0.39f, 0.55f); private readonly Color _fg = new Color(0.9f, 0.96f, 1f, 1f); private readonly Color _mutedCol = new Color(0.55f, 0.68f, 0.82f, 0.9f); private readonly Color _accentBase = new Color(0.14f, 0.73f, 1f, 1f); private readonly Color _accentHover = new Color(0.36f, 0.84f, 1f, 1f); private readonly Color _accentDisabled = new Color(0.17f, 0.31f, 0.44f, 0.7f); private readonly Color _success = new Color(0.34f, 0.92f, 0.66f, 1f); private readonly Color _warning = new Color(1f, 0.76f, 0.36f, 1f); private int _tabIndex; private string _searchEnemies = string.Empty; private string _searchValuables = string.Empty; private string _searchItems = string.Empty; private string _searchTeleport = string.Empty; private string _baseStatus = "Load into a run, then browse or spawn from live game data."; private string _lastAction = "Ready."; private bool _discovered; private bool _discovering; private CursorLockMode _prevLock; private bool _prevVisible; private GameObject _canvasRoot = null; private GameObject _panelRoot = null; private ScrollRect _scrollRect = null; private ScrollRect _sidebarScrollRect = null; private RectTransform _scrollViewportRect = null; private RectTransform _sidebarViewportRect = null; private Transform _contentContainer = null; private Transform _sidebarContentContainer = null; private Transform _tabBar = null; private TextMeshProUGUI _titleText = null; private TextMeshProUGUI _statusText = null; private TextMeshProUGUI _countText = null; private TextMeshProUGUI _summaryText = null; private TextMeshProUGUI _sceneBadgeText = null; private TextMeshProUGUI _searchPlaceholderText = null; private TextMeshProUGUI _spawnQuantityValueText = null; private TextMeshProUGUI _spawnOriginValueText = null; private TextMeshProUGUI _sortValueText = null; private Button _refreshButton = null; private TMP_InputField _searchInput = null; private ConfigEntry<KeyCode> _toggleKey = null; private ConfigEntry<float> _scrollSpeed = null; private ConfigEntry<float> _uiScale = null; private ConfigEntry<Vector2> _uiPosition = null; private ConfigEntry<bool> _showTooltips = null; private ConfigEntry<int> _spawnQuantity = null; private ConfigEntry<int> _spawnOriginMode = null; private ConfigEntry<bool> _sortAscending = null; private ConfigEntry<bool> _autoRefreshOnSceneLoad = null; private LevelPoint? _pinnedTeleportPoint; private string _pinnedTeleportPointName = string.Empty; internal static SpawnBrowser Instance { get; private set; } = null; internal static bool UIActive => _uiVisible; internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Expected O, but got Unknown //IL_01de: Unknown result type (might be due to invalid IL or missing references) Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); _toggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Input", "ToggleKey", (KeyCode)277, "Key to toggle the Spawn Browser UI."); _scrollSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("UI", "ScrollSpeed", 35f, "Mouse wheel scroll sensitivity for the Spawn Browser list."); _uiScale = ((BaseUnityPlugin)this).Config.Bind<float>("UI", "UIScale", 1f, "Scale of the UI panel (0.65 to 1.35)."); _uiPosition = ((BaseUnityPlugin)this).Config.Bind<Vector2>("UI", "UIPosition", Vector2.zero, "Custom offset position for the UI panel."); _showTooltips = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "ShowTooltips", true, "Show extra row context in the status strip when hovering entries."); _spawnQuantity = ((BaseUnityPlugin)this).Config.Bind<int>("Spawn", "Quantity", 1, "How many copies each spawn action creates (1 to 10)."); _spawnOriginMode = ((BaseUnityPlugin)this).Config.Bind<int>("Spawn", "OriginMode", 0, "0 = Closest level point, 1 = Player position, 2 = Pinned teleport point."); _sortAscending = ((BaseUnityPlugin)this).Config.Bind<bool>("Browser", "SortAscending", true, "Sort browser rows from A to Z."); _autoRefreshOnSceneLoad = ((BaseUnityPlugin)this).Config.Bind<bool>("Browser", "AutoRefreshOnSceneLoad", true, "Refresh discovery when a new scene loads while the browser is open."); NormalizeConfigValues(); Harmony = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony.PatchAll(); SceneManager.sceneLoaded += OnSceneLoaded; Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} loaded. Press {_toggleKey.Value} to open/close the spawn browser."); ((MonoBehaviour)this).StartCoroutine(InitializeCanvasDelayed()); } private IEnumerator InitializeCanvasDelayed() { yield return (object)new WaitForSeconds(0.5f); BuildCanvas(); } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { _discovered = false; _discovering = false; _pinnedTeleportPoint = null; _pinnedTeleportPointName = string.Empty; _lastAction = "Scene loaded: " + ((Scene)(ref scene)).name; _baseStatus = "Scene changed. Press rescan or reopen the browser to pull current run data."; if (_uiVisible) { if (_autoRefreshOnSceneLoad.Value) { ((MonoBehaviour)this).StartCoroutine(DiscoverRoutine()); } else { RefreshCurrentTab(); } } } private void OnDestroy() { SceneManager.sceneLoaded -= OnSceneLoaded; Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } if (_uiVisible) { RestoreCursor(); } if (Object.op_Implicit((Object)(object)_canvasRoot)) { Object.Destroy((Object)(object)_canvasRoot); } } private void Update() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) NormalizeConfigValues(); if (Input.GetKeyDown(_toggleKey.Value)) { _uiVisible = !_uiVisible; if (_uiVisible) { OpenBrowser(); } else { CloseBrowser(); } } if (_uiVisible) { KeepCursorFree(); HandleMouseWheelScroll(); UpdateTabVisuals(); UpdateChrome(); } if ((Object)(object)_scrollRect != (Object)null && _scrollRect.scrollSensitivity != _scrollSpeed.Value) { _scrollRect.scrollSensitivity = _scrollSpeed.Value; } if ((Object)(object)_sidebarScrollRect != (Object)null && _sidebarScrollRect.scrollSensitivity != _scrollSpeed.Value) { _sidebarScrollRect.scrollSensitivity = _scrollSpeed.Value; } if ((Object)(object)_panelRoot != (Object)null) { RectTransform component = _panelRoot.GetComponent<RectTransform>(); ((Transform)component).localScale = new Vector3(_uiScale.Value, _uiScale.Value, 1f); component.anchoredPosition = _uiPosition.Value; } } private void NormalizeConfigValues() { if (_spawnQuantity != null) { _spawnQuantity.Value = Mathf.Clamp(_spawnQuantity.Value, 1, 10); } if (_spawnOriginMode != null) { _spawnOriginMode.Value = Mathf.Clamp(_spawnOriginMode.Value, 0, 2); } if (_uiScale != null) { _uiScale.Value = Mathf.Clamp(_uiScale.Value, 0.65f, 1.35f); } } private void BuildCanvas() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_007a: 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_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_03fe: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_0474: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_04a2: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Expected O, but got Unknown //IL_0565: Unknown result type (might be due to invalid IL or missing references) //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_05aa: Unknown result type (might be due to invalid IL or missing references) //IL_05b7: Unknown result type (might be due to invalid IL or missing references) //IL_05ef: Unknown result type (might be due to invalid IL or missing references) //IL_06a7: Unknown result type (might be due to invalid IL or missing references) //IL_0710: Unknown result type (might be due to invalid IL or missing references) //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0748: Unknown result type (might be due to invalid IL or missing references) //IL_075f: Unknown result type (might be due to invalid IL or missing references) //IL_0776: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown _canvasRoot = new GameObject("SpawnBrowserCanvas_EMPRESS"); Object.DontDestroyOnLoad((Object)(object)_canvasRoot); _canvasRoot.layer = LayerMask.NameToLayer("UI"); Canvas val = _canvasRoot.AddComponent<Canvas>(); val.renderMode = (RenderMode)0; val.sortingOrder = 32767; val.overrideSorting = true; CanvasScaler val2 = _canvasRoot.AddComponent<CanvasScaler>(); val2.uiScaleMode = (ScaleMode)1; val2.referenceResolution = new Vector2(1920f, 1080f); val2.matchWidthOrHeight = 1f; _canvasRoot.AddComponent<GraphicRaycaster>(); if ((Object)(object)EventSystem.current == (Object)null) { GameObject val3 = new GameObject("EventSystem_EMPRESS"); Object.DontDestroyOnLoad((Object)(object)val3); val3.AddComponent<EventSystem>(); val3.AddComponent<StandaloneInputModule>(); } GameObject val4 = CreateUIElement("Backdrop", _canvasRoot.transform); Stretch(val4.GetComponent<RectTransform>(), 0f, 0f, 0f, 0f); ((Graphic)val4.AddComponent<Image>()).color = new Color(0.01f, 0.02f, 0.04f, 0.62f); _panelRoot = CreateCard("Panel", _canvasRoot.transform, _bg); RectTransform component = _panelRoot.GetComponent<RectTransform>(); Vector2 val5 = default(Vector2); ((Vector2)(ref val5))..ctor(0.5f, 0.5f); component.anchorMax = val5; component.anchorMin = val5; component.pivot = new Vector2(0.5f, 0.5f); component.sizeDelta = new Vector2(1180f, 760f); component.anchoredPosition = _uiPosition.Value; ((Shadow)_panelRoot.GetComponent<Outline>()).effectColor = new Color(_accentBase.r, _accentBase.g, _accentBase.b, 0.5f); ((Shadow)_panelRoot.GetComponent<Outline>()).effectDistance = new Vector2(2f, -2f); GameObject val6 = CreateUIElement("AccentBar", _panelRoot.transform); RectTransform component2 = val6.GetComponent<RectTransform>(); component2.anchorMin = new Vector2(0f, 1f); component2.anchorMax = new Vector2(1f, 1f); component2.pivot = new Vector2(0.5f, 1f); component2.sizeDelta = new Vector2(0f, 6f); component2.anchoredPosition = Vector2.zero; ((Graphic)val6.AddComponent<Image>()).color = _accentBase; GameObject val7 = CreateCard("Sidebar", _panelRoot.transform, _bg2); RectTransform component3 = val7.GetComponent<RectTransform>(); component3.anchorMin = new Vector2(0f, 0f); component3.anchorMax = new Vector2(0f, 1f); component3.pivot = new Vector2(0f, 0.5f); component3.sizeDelta = new Vector2(290f, -32f); component3.anchoredPosition = new Vector2(16f, 0f); GameObject val8 = CreateUIElement("SidebarScrollView", val7.transform); Stretch(val8.GetComponent<RectTransform>(), 10f, 12f, 10f, 10f); _sidebarScrollRect = val8.AddComponent<ScrollRect>(); _sidebarScrollRect.horizontal = false; _sidebarScrollRect.vertical = true; _sidebarScrollRect.scrollSensitivity = _scrollSpeed.Value; _sidebarScrollRect.verticalScrollbarVisibility = (ScrollbarVisibility)0; GameObject val9 = CreateUIElement("SidebarViewport", val8.transform); RectTransform component4 = val9.GetComponent<RectTransform>(); component4.anchorMin = Vector2.zero; component4.anchorMax = Vector2.one; component4.offsetMin = Vector2.zero; component4.offsetMax = new Vector2(-12f, 0f); val9.AddComponent<RectMask2D>(); _sidebarViewportRect = component4; _sidebarScrollRect.viewport = component4; GameObject val10 = CreateUIElement("SidebarContent", val9.transform); RectTransform component5 = val10.GetComponent<RectTransform>(); component5.anchorMin = new Vector2(0f, 1f); component5.anchorMax = new Vector2(1f, 1f); component5.pivot = new Vector2(0.5f, 1f); component5.sizeDelta = Vector2.zero; VerticalLayoutGroup val11 = val10.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val11).spacing = 10f; ((LayoutGroup)val11).padding = new RectOffset(0, 0, 0, 0); ((HorizontalOrVerticalLayoutGroup)val11).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val11).childControlHeight = true; ((HorizontalOrVerticalLayoutGroup)val11).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val11).childForceExpandHeight = false; val10.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; _sidebarScrollRect.content = component5; _sidebarContentContainer = val10.transform; BuildSidebar(val10.transform); GameObject val12 = CreateUIElement("SidebarScrollbar", val8.transform); RectTransform component6 = val12.GetComponent<RectTransform>(); component6.anchorMin = new Vector2(1f, 0f); component6.anchorMax = new Vector2(1f, 1f); component6.pivot = new Vector2(1f, 1f); component6.sizeDelta = new Vector2(10f, 0f); component6.anchoredPosition = Vector2.zero; ((Graphic)val12.AddComponent<Image>()).color = new Color(_surfaceLift.r, _surfaceLift.g, _surfaceLift.b, 0.55f); Scrollbar val13 = val12.AddComponent<Scrollbar>(); val13.direction = (Direction)2; GameObject val14 = CreateUIElement("SlidingArea", val12.transform); Stretch(val14.GetComponent<RectTransform>(), 2f, 2f, 2f, 2f); GameObject val15 = CreateUIElement("Handle", val14.transform); Stretch(val15.GetComponent<RectTransform>(), 0f, 0f, 0f, 0f); Image val16 = val15.AddComponent<Image>(); ((Graphic)val16).color = new Color(_accentBase.r, _accentBase.g, _accentBase.b, 0.82f); val13.handleRect = val15.GetComponent<RectTransform>(); ((Selectable)val13).targetGraphic = (Graphic)(object)val16; _sidebarScrollRect.verticalScrollbar = val13; GameObject val17 = CreateCard("Body", _panelRoot.transform, new Color(_surface.r, _surface.g, _surface.b, 0.75f)); RectTransform component7 = val17.GetComponent<RectTransform>(); component7.anchorMin = new Vector2(0f, 0f); component7.anchorMax = new Vector2(1f, 1f); component7.offsetMin = new Vector2(322f, 16f); component7.offsetMax = new Vector2(-16f, -16f); BuildBody(val17.transform); _canvasRoot.SetActive(false); UpdateSearchPlaceholder(); UpdateChrome(); UpdateTabVisuals(); RebuildLayout(); } private void BuildSidebar(Transform sidebar) { MakeBrandCard(sidebar); MakeSummaryCard(sidebar); MakeTabsCard(sidebar); MakeControlsCard(sidebar); } private void MakeBrandCard(Transform parent) { //IL_0009: 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_004b: Expected O, but got Unknown //IL_0083: 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_00f1: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("Brand", parent, _surface); val.AddComponent<LayoutElement>().preferredHeight = 104f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 4f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("Eyebrow", val.transform, "EMPRESS TOOLSUITE", 12f, _accentBase, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; TextMeshProUGUI val4 = CreateTextMeshPro("BrandTitle", val.transform, "Spawn Browser", 23f, _fg, (TextAlignmentOptions)513); ((TMP_Text)val4).fontStyle = (FontStyles)1; ((TMP_Text)val4).enableWordWrapping = false; ((TMP_Text)val4).overflowMode = (TextOverflowModes)1; TextMeshProUGUI val5 = CreateTextMeshPro("BrandCopy", val.transform, "Version 3.0 • Live spawn control", 11f, _mutedCol, (TextAlignmentOptions)257); ((TMP_Text)val5).enableWordWrapping = false; ((TMP_Text)val5).overflowMode = (TextOverflowModes)1; } private void MakeSummaryCard(Transform parent) { //IL_0009: 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_004b: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("Summary", parent, _surface); val.AddComponent<LayoutElement>().preferredHeight = 118f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 6f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("SummaryTitle", val.transform, "RUN SNAPSHOT", 12f, _accentBase, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; _summaryText = CreateTextMeshPro("SummaryBody", val.transform, string.Empty, 11f, _fg, (TextAlignmentOptions)257); ((TMP_Text)_summaryText).enableWordWrapping = true; } private void MakeTabsCard(Transform parent) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Expected O, but got Unknown GameObject val = CreateCard("TabsCard", parent, _surface); val.AddComponent<LayoutElement>().minHeight = 238f; val.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 8f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("TabsTitle", val.transform, "SECTIONS", 12f, _accentBase, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; GameObject val4 = CreateUIElement("TabBar", val.transform); _tabBar = val4.transform; VerticalLayoutGroup val5 = val4.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val5).spacing = 6f; ((HorizontalOrVerticalLayoutGroup)val5).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val5).childControlHeight = true; ((HorizontalOrVerticalLayoutGroup)val5).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val5).childForceExpandHeight = false; val4.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; for (int i = 0; i < TabNames.Length; i++) { int index = i; GameObject val6 = CreateButton($"Tab{i}", _tabBar, TabNames[i], primary: false); val6.AddComponent<LayoutElement>().preferredHeight = 42f; ((UnityEvent)val6.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { SwitchTab(index); }); } } private void MakeControlsCard(Transform parent) { //IL_0009: 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_004b: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("Controls", parent, _surface); val.AddComponent<LayoutElement>().preferredHeight = 208f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 6f; ((LayoutGroup)val2).padding = new RectOffset(14, 14, 12, 12); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("ControlsTitle", val.transform, "QUICK OPTIONS", 12f, _accentBase, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; MakeQuantityRow(val.transform); MakeOriginRow(val.transform); MakeSortRow(val.transform); } private void MakeHintCard(Transform parent) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_0098: 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 = CreateCard("Hint", parent, new Color(_surface.r, _surface.g, _surface.b, 0.7f)); val.AddComponent<LayoutElement>().preferredHeight = 68f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 4f; ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("HintTitle", val.transform, "BROWSER NOTES", 12f, _warning, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; TextMeshProUGUI val4 = CreateTextMeshPro("HintBody", val.transform, "Teleport is local-only. Spawning is host or offline only. Pin any level point to reuse it as a spawn anchor.", 11f, _mutedCol, (TextAlignmentOptions)257); ((TMP_Text)val4).enableWordWrapping = true; } private void MakeQuantityRow(Transform parent) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Expected O, but got Unknown GameObject val = CreateControlCard("QuantityRow", parent); TextMeshProUGUI val2 = CreateTextMeshPro("Label", val.transform, "Quantity", 13f, _fg, (TextAlignmentOptions)513); ((Component)val2).gameObject.AddComponent<LayoutElement>().preferredWidth = 74f; GameObject val3 = CreateButton("Minus", val.transform, "-", primary: false); val3.AddComponent<LayoutElement>().preferredWidth = 30f; ((UnityEvent)val3.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { _spawnQuantity.Value = Mathf.Clamp(_spawnQuantity.Value - 1, 1, 10); UpdateChrome(); RefreshCurrentTab(); }); GameObject val4 = CreateCard("Value", val.transform, new Color(_surfaceLift.r, _surfaceLift.g, _surfaceLift.b, 0.85f)); val4.AddComponent<LayoutElement>().preferredWidth = 64f; VerticalLayoutGroup val5 = val4.AddComponent<VerticalLayoutGroup>(); ((LayoutGroup)val5).padding = new RectOffset(0, 0, 6, 6); ((LayoutGroup)val5).childAlignment = (TextAnchor)4; _spawnQuantityValueText = CreateTextMeshPro("ValueText", val4.transform, string.Empty, 15f, _fg, (TextAlignmentOptions)514); ((TMP_Text)_spawnQuantityValueText).fontStyle = (FontStyles)1; GameObject val6 = CreateButton("Plus", val.transform, "+", primary: true); val6.AddComponent<LayoutElement>().preferredWidth = 30f; ((UnityEvent)val6.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { _spawnQuantity.Value = Mathf.Clamp(_spawnQuantity.Value + 1, 1, 10); UpdateChrome(); RefreshCurrentTab(); }); } private void MakeOriginRow(Transform parent) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown GameObject val = CreateTallControlCard("OriginRow", parent, "Spawn Origin"); GameObject val2 = CreateButton("OriginButton", val.transform, string.Empty, primary: false); val2.AddComponent<LayoutElement>().preferredHeight = 28f; _spawnOriginValueText = val2.GetComponentInChildren<TextMeshProUGUI>(); ((UnityEvent)val2.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { _spawnOriginMode.Value = (_spawnOriginMode.Value + 1) % 3; UpdateChrome(); RefreshCurrentTab(); }); } private void MakeSortRow(Transform parent) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown GameObject val = CreateTallControlCard("SortRow", parent, "Row Order"); GameObject val2 = CreateButton("SortButton", val.transform, string.Empty, primary: false); val2.AddComponent<LayoutElement>().preferredHeight = 28f; _sortValueText = val2.GetComponentInChildren<TextMeshProUGUI>(); ((UnityEvent)val2.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { _sortAscending.Value = !_sortAscending.Value; UpdateChrome(); RefreshCurrentTab(); }); } private GameObject CreateControlCard(string name, Transform parent) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown GameObject val = CreateCard(name, parent, _surfaceSoft); val.AddComponent<LayoutElement>().preferredHeight = 44f; HorizontalLayoutGroup val2 = val.AddComponent<HorizontalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 6f; ((LayoutGroup)val2).padding = new RectOffset(10, 10, 8, 8); ((LayoutGroup)val2).childAlignment = (TextAnchor)3; ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = true; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandWidth = false; ((HorizontalOrVerticalLayoutGroup)val2).childForceExpandHeight = false; return val; } private GameObject CreateTallControlCard(string name, Transform parent, string title) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0069: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard(name, parent, _surfaceSoft); val.AddComponent<LayoutElement>().preferredHeight = 56f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 4f; ((LayoutGroup)val2).padding = new RectOffset(10, 10, 8, 8); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("Label", val.transform, title, 12f, _fg, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; return val; } private void BuildBody(Transform body) { MakeHeader(body); MakeSearchBar(body); MakeStatusCard(body); MakeScrollArea(body); } private void MakeHeader(Transform parent) { //IL_0009: 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_0050: Expected O, but got Unknown //IL_00c7: 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_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Expected O, but got Unknown //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Expected O, but got Unknown GameObject val = CreateCard("Header", parent, _surfaceLift); PositionTop(val.GetComponent<RectTransform>(), 12f, 78f); HorizontalLayoutGroup val2 = val.AddComponent<HorizontalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 10f; ((LayoutGroup)val2).padding = new RectOffset(18, 18, 16, 16); ((LayoutGroup)val2).childAlignment = (TextAnchor)3; ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = true; GameObject val3 = CreateUIElement("Copy", val.transform); val3.AddComponent<LayoutElement>().flexibleWidth = 1f; VerticalLayoutGroup val4 = val3.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val4).spacing = 2f; ((HorizontalOrVerticalLayoutGroup)val4).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val4).childControlHeight = false; _titleText = CreateTextMeshPro("Title", val3.transform, "<b>EMPRESS SPAWN BROWSER</b> <size=75%><color=#90DFFF>3.0</color></size>", 24f, _fg, (TextAlignmentOptions)513); ((TMP_Text)_titleText).enableWordWrapping = false; TextMeshProUGUI val5 = CreateTextMeshPro("Subtitle", val3.transform, "Live browser for REPO enemies, valuables, items, and level-point warps.", 12f, _mutedCol, (TextAlignmentOptions)513); ((TMP_Text)val5).enableWordWrapping = true; GameObject val6 = CreateButton("RefreshBtn", val.transform, "RESCAN", primary: true); val6.AddComponent<LayoutElement>().preferredWidth = 110f; _refreshButton = val6.GetComponent<Button>(); ((UnityEvent)_refreshButton.onClick).AddListener((UnityAction)delegate { ((MonoBehaviour)this).StartCoroutine(DiscoverRoutine()); }); GameObject val7 = CreateButton("CloseBtn", val.transform, "CLOSE", primary: false); val7.AddComponent<LayoutElement>().preferredWidth = 96f; ((UnityEvent)val7.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { _uiVisible = false; CloseBrowser(); }); } private void MakeSearchBar(Transform parent) { //IL_0009: 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_0050: Expected O, but got Unknown //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Expected O, but got Unknown //IL_02d8: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("SearchCard", parent, _surface); PositionTop(val.GetComponent<RectTransform>(), 102f, 58f); HorizontalLayoutGroup val2 = val.AddComponent<HorizontalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 12f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 10, 10); ((LayoutGroup)val2).childAlignment = (TextAnchor)3; ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = true; TextMeshProUGUI val3 = CreateTextMeshPro("SearchIcon", val.transform, "SEARCH", 11f, _accentBase, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; ((Component)val3).gameObject.AddComponent<LayoutElement>().preferredWidth = 74f; GameObject val4 = CreateCard("SearchField", val.transform, new Color(_bg2.r, _bg2.g, _bg2.b, 0.94f)); val4.AddComponent<LayoutElement>().flexibleWidth = 1f; val4.GetComponent<RectTransform>().sizeDelta = new Vector2(0f, 36f); _searchInput = val4.AddComponent<TMP_InputField>(); GameObject val5 = CreateUIElement("SearchViewport", val4.transform); RectTransform component = val5.GetComponent<RectTransform>(); Stretch(component, 10f, 10f, 0f, 0f); val5.AddComponent<RectMask2D>(); _searchInput.textViewport = component; TextMeshProUGUI val6 = CreateTextMeshPro("SearchText", val5.transform, string.Empty, 15f, _fg, (TextAlignmentOptions)513); Stretch(((TMP_Text)val6).rectTransform, 0f, 0f, 0f, 0f); _searchInput.textComponent = (TMP_Text)(object)val6; _searchPlaceholderText = CreateTextMeshPro("SearchPlaceholder", val5.transform, string.Empty, 15f, _mutedCol, (TextAlignmentOptions)513); Stretch(((TMP_Text)_searchPlaceholderText).rectTransform, 0f, 0f, 0f, 0f); _searchInput.placeholder = (Graphic)(object)_searchPlaceholderText; ((UnityEvent<string>)(object)_searchInput.onValueChanged).AddListener((UnityAction<string>)OnSearchChanged); GameObject val7 = CreateCard("SceneBadge", val.transform, new Color(_surfaceLift.r, _surfaceLift.g, _surfaceLift.b, 0.9f)); val7.AddComponent<LayoutElement>().preferredWidth = 240f; VerticalLayoutGroup val8 = val7.AddComponent<VerticalLayoutGroup>(); ((LayoutGroup)val8).padding = new RectOffset(12, 12, 8, 8); ((LayoutGroup)val8).childAlignment = (TextAnchor)4; _sceneBadgeText = CreateTextMeshPro("SceneBadgeText", val7.transform, string.Empty, 11f, _fg, (TextAlignmentOptions)514); ((TMP_Text)_sceneBadgeText).enableWordWrapping = true; } private void MakeStatusCard(Transform parent) { //IL_0009: 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_0050: Expected O, but got Unknown //IL_0079: 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) GameObject val = CreateCard("StatusCard", parent, _surface); PositionTop(val.GetComponent<RectTransform>(), 174f, 78f); VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 6f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; _statusText = CreateTextMeshPro("StatusText", val.transform, string.Empty, 13f, _fg, (TextAlignmentOptions)513); ((TMP_Text)_statusText).enableWordWrapping = true; _countText = CreateTextMeshPro("CountText", val.transform, string.Empty, 11f, _mutedCol, (TextAlignmentOptions)513); } private void MakeScrollArea(Transform parent) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: 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_0161: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("ScrollShell", parent, new Color(_surface.r, _surface.g, _surface.b, 0.55f)); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = new Vector2(0f, 0f); component.anchorMax = new Vector2(1f, 1f); component.offsetMin = new Vector2(0f, 12f); component.offsetMax = new Vector2(0f, -266f); GameObject val2 = CreateUIElement("ScrollView", val.transform); Stretch(val2.GetComponent<RectTransform>(), 12f, 18f, 12f, 12f); _scrollRect = val2.AddComponent<ScrollRect>(); _scrollRect.horizontal = false; _scrollRect.vertical = true; _scrollRect.scrollSensitivity = _scrollSpeed.Value; _scrollRect.verticalScrollbarVisibility = (ScrollbarVisibility)0; GameObject val3 = CreateUIElement("Viewport", val2.transform); RectTransform component2 = val3.GetComponent<RectTransform>(); component2.anchorMin = Vector2.zero; component2.anchorMax = Vector2.one; component2.offsetMin = Vector2.zero; component2.offsetMax = new Vector2(-10f, 0f); val3.AddComponent<RectMask2D>(); _scrollViewportRect = component2; _scrollRect.viewport = component2; GameObject val4 = CreateUIElement("Content", val3.transform); RectTransform component3 = val4.GetComponent<RectTransform>(); component3.anchorMin = new Vector2(0f, 1f); component3.anchorMax = new Vector2(1f, 1f); component3.pivot = new Vector2(0.5f, 1f); component3.sizeDelta = Vector2.zero; VerticalLayoutGroup val5 = val4.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val5).spacing = 10f; ((HorizontalOrVerticalLayoutGroup)val5).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val5).childControlHeight = false; ((HorizontalOrVerticalLayoutGroup)val5).childForceExpandWidth = true; ((HorizontalOrVerticalLayoutGroup)val5).childForceExpandHeight = false; val4.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; _scrollRect.content = component3; _contentContainer = val4.transform; GameObject val6 = CreateUIElement("Scrollbar", val2.transform); RectTransform component4 = val6.GetComponent<RectTransform>(); component4.anchorMin = new Vector2(1f, 0f); component4.anchorMax = new Vector2(1f, 1f); component4.pivot = new Vector2(1f, 1f); component4.sizeDelta = new Vector2(10f, 0f); component4.anchoredPosition = Vector2.zero; ((Graphic)val6.AddComponent<Image>()).color = new Color(_surfaceLift.r, _surfaceLift.g, _surfaceLift.b, 0.7f); Scrollbar val7 = val6.AddComponent<Scrollbar>(); val7.direction = (Direction)2; GameObject val8 = CreateUIElement("SlidingArea", val6.transform); Stretch(val8.GetComponent<RectTransform>(), 2f, 2f, 2f, 2f); GameObject val9 = CreateUIElement("Handle", val8.transform); Stretch(val9.GetComponent<RectTransform>(), 0f, 0f, 0f, 0f); Image val10 = val9.AddComponent<Image>(); ((Graphic)val10).color = _accentBase; val7.handleRect = val9.GetComponent<RectTransform>(); ((Selectable)val7).targetGraphic = (Graphic)(object)val10; _scrollRect.verticalScrollbar = val7; } private void ShowCanvas() { if (Object.op_Implicit((Object)(object)_canvasRoot)) { _canvasRoot.SetActive(true); } UpdateSearchPlaceholder(); _searchInput.SetTextWithoutNotify(GetCurrentSearch()); if ((Object)(object)_scrollRect != (Object)null) { _scrollRect.verticalNormalizedPosition = 1f; } if ((Object)(object)_sidebarScrollRect != (Object)null) { _sidebarScrollRect.verticalNormalizedPosition = 1f; } RefreshCurrentTab(); RebuildLayout(); } private void HideCanvas() { if (Object.op_Implicit((Object)(object)_canvasRoot)) { _canvasRoot.SetActive(false); } } private void OpenBrowser() { if (!_discovered && !_discovering) { ((MonoBehaviour)this).StartCoroutine(DiscoverRoutine()); } TakeCursor(); ShowCanvas(); } private void CloseBrowser() { HideCanvas(); RestoreCursor(); } private void SwitchTab(int index) { _tabIndex = index; UpdateSearchPlaceholder(); _searchInput.SetTextWithoutNotify(GetCurrentSearch()); RefreshCurrentTab(); } private void OnSearchChanged(string value) { switch (_tabIndex) { case 0: _searchEnemies = value; break; case 1: _searchValuables = value; break; case 2: _searchItems = value; break; case 3: _searchTeleport = value; break; } RefreshCurrentTab(); } private string GetCurrentSearch() { int tabIndex = _tabIndex; if (1 == 0) { } string result = tabIndex switch { 0 => _searchEnemies, 1 => _searchValuables, 2 => _searchItems, 3 => _searchTeleport, _ => string.Empty, }; if (1 == 0) { } return result; } private void UpdateSearchPlaceholder() { if ((Object)(object)_searchPlaceholderText != (Object)null) { ((TMP_Text)_searchPlaceholderText).text = SearchHints[Mathf.Clamp(_tabIndex, 0, SearchHints.Length - 1)]; } } private void UpdateTabVisuals() { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_tabBar == (Object)null) { return; } for (int i = 0; i < _tabBar.childCount; i++) { Button component = ((Component)_tabBar.GetChild(i)).GetComponent<Button>(); if (!((Object)(object)component == (Object)null)) { Image component2 = ((Component)component).GetComponent<Image>(); Outline component3 = ((Component)component).GetComponent<Outline>(); TextMeshProUGUI componentInChildren = ((Component)component).GetComponentInChildren<TextMeshProUGUI>(); bool flag = i == _tabIndex; if ((Object)(object)component2 != (Object)null) { ((Graphic)component2).color = (flag ? _surfaceLift : _bg2); } if ((Object)(object)component3 != (Object)null) { ((Shadow)component3).effectColor = (flag ? new Color(_accentBase.r, _accentBase.g, _accentBase.b, 0.75f) : new Color(_surfaceLift.r, _surfaceLift.g, _surfaceLift.b, 0.45f)); } if ((Object)(object)componentInChildren != (Object)null) { ((Graphic)componentInChildren).color = (flag ? Color.white : _fg); } } } } private void RefreshCurrentTab() { if (!((Object)(object)_contentContainer == (Object)null)) { ClearContent(); SetStatus(BuildTabStatus(), keepAsBase: true); if (_tabIndex == 0) { RenderEnemiesTab(); } else if (_tabIndex == 1) { RenderValuablesTab(); } else if (_tabIndex == 2) { RenderItemsTab(); } else if (_tabIndex == 3) { RenderTeleportTab(); } RebuildLayout(); } } private void ClearContent() { for (int num = _contentContainer.childCount - 1; num >= 0; num--) { Object.Destroy((Object)(object)((Component)_contentContainer.GetChild(num)).gameObject); } } private void HandleMouseWheelScroll() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) float y = Input.mouseScrollDelta.y; if (!(Mathf.Abs(y) < 0.01f)) { if (IsPointerInside(_scrollViewportRect) && (Object)(object)_scrollRect != (Object)null) { ApplyScrollDelta(_scrollRect, y, 0.13f); } else if (IsPointerInside(_sidebarViewportRect) && (Object)(object)_sidebarScrollRect != (Object)null) { ApplyScrollDelta(_sidebarScrollRect, y, 0.11f); } } } private static bool IsPointerInside(RectTransform rect) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) return (Object)(object)rect != (Object)null && RectTransformUtility.RectangleContainsScreenPoint(rect, Vector2.op_Implicit(Input.mousePosition), (Camera)null); } private static void ApplyScrollDelta(ScrollRect scrollRect, float wheel, float strength) { //IL_0033: 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_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)scrollRect == (Object)null) && !((Object)(object)scrollRect.content == (Object)null) && !((Object)(object)scrollRect.viewport == (Object)null)) { Rect rect = scrollRect.content.rect; float height = ((Rect)(ref rect)).height; rect = scrollRect.viewport.rect; if (!(height <= ((Rect)(ref rect)).height + 1f)) { scrollRect.verticalNormalizedPosition = Mathf.Clamp01(scrollRect.verticalNormalizedPosition + wheel * strength); } } } private void RenderEnemiesTab() { if (_discovering) { RenderEmptyState("Scanning Enemy Setups", "Pulling live enemy setup assets from the current game build."); ((TMP_Text)_countText).text = "Working..."; return; } List<string> list = ApplySearchAndSort(_enemyNames, _searchEnemies); ((TMP_Text)_countText).text = $"{list.Count} enemy setups · spawn x{_spawnQuantity.Value} · {GetSpawnOriginLabel()}"; if (!_discovered && list.Count == 0) { RenderEmptyState("No Enemy Data Yet", "Load into a run and press RESCAN to discover enemy setups from the current session."); return; } if (list.Count == 0) { RenderEmptyState("No Enemy Matches", "Try a wider search or switch to another tab."); return; } foreach (string name in list) { if (_enemyByKey.TryGetValue(name.ToLowerInvariant(), out EnemySetup value) && !((Object)(object)value == (Object)null)) { string meta = $"{Mathf.Max(value.spawnObjects?.Count ?? 0, 1)} prefab refs · {GetSpawnOriginLabel()}"; CreateEntryCard(name.ToUpperInvariant(), meta, "SPAWN", delegate { SpawnEnemy(name); }, null, null, highlight: false, $"Enemy setup '{name}' uses {Mathf.Max(value.spawnObjects?.Count ?? 0, 1)} prefab refs and spawns x{_spawnQuantity.Value} at {GetResolvedSpawnOriginLabel()}."); } } } private void RenderValuablesTab() { if (_discovering) { RenderEmptyState("Scanning Valuable Prefabs", "Collecting every valuable prefab reference found in the current level pool."); ((TMP_Text)_countText).text = "Working..."; return; } List<string> list = ApplySearchAndSort(_valuableNames, _searchValuables); ((TMP_Text)_countText).text = $"{list.Count} valuables · spawn x{_spawnQuantity.Value} · {GetSpawnOriginLabel()}"; if (!_discovered && list.Count == 0) { RenderEmptyState("No Valuable Data Yet", "Load into a run and press RESCAN to discover valuable prefabs from the live level presets."); return; } if (list.Count == 0) { RenderEmptyState("No Valuable Matches", "Try a broader search or switch tabs."); return; } foreach (string name in list) { if (_valuableByKey.TryGetValue(name.ToLowerInvariant(), out PrefabRef value) && value != null) { CreateEntryCard(name.ToUpperInvariant(), value.ResourcePath + " · " + GetSpawnOriginLabel(), "SPAWN", delegate { SpawnValuable(name); }, null, null, highlight: false, $"Valuable '{name}' will spawn x{_spawnQuantity.Value} at {GetResolvedSpawnOriginLabel()} using prefab path '{value.ResourcePath}'."); } } } private void RenderItemsTab() { //IL_0141: 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_0190: 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) if (_discovering) { RenderEmptyState("Scanning Items And Upgrades", "Reading shop pools and item dictionaries from the active run."); ((TMP_Text)_countText).text = "Working..."; return; } List<string> list = ApplySearchAndSort(_itemNames, _searchItems); ((TMP_Text)_countText).text = $"{list.Count} items · spawn x{_spawnQuantity.Value} · {GetSpawnOriginLabel()}"; if (!_discovered && list.Count == 0) { RenderEmptyState("No Item Data Yet", "Open a run or shop state, then RESCAN to pull the current item catalog."); return; } if (list.Count == 0) { RenderEmptyState("No Item Matches", "Try a broader search or switch tabs."); return; } foreach (string name in list) { if (_itemByKey.TryGetValue(name.ToLowerInvariant(), out Item value) && !((Object)(object)value == (Object)null)) { CreateEntryCard(name.ToUpperInvariant(), $"{value.itemType} · {value.itemVolume} · {GetSpawnOriginLabel()}", "SPAWN", delegate { SpawnItem(name); }, null, null, highlight: false, $"Item '{name}' is a {value.itemType} with {value.itemVolume} volume and spawns x{_spawnQuantity.Value} at {GetResolvedSpawnOriginLabel()}."); } } } private void RenderTeleportTab() { //IL_003e: 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_019d: Unknown result type (might be due to invalid IL or missing references) List<LevelPoint> source = (from point in Object.FindObjectsOfType<LevelPoint>() where (Object)(object)point != (Object)null select point).ToList(); Vector3 playerPos = GetPlayerPosition(); IEnumerable<LevelPoint> source2 = source.Where(delegate(LevelPoint point) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrWhiteSpace(_searchTeleport)) { return true; } string text = ((Object)point).name + " " + BuildTeleportMeta(point, playerPos, (Object)(object)ResolvePinnedTeleportPoint() == (Object)(object)point); return text.IndexOf(_searchTeleport, StringComparison.OrdinalIgnoreCase) >= 0; }); source2 = (_sortAscending.Value ? source2.OrderBy<LevelPoint, string>((LevelPoint point) => ((Object)point).name, StringComparer.OrdinalIgnoreCase) : source2.OrderByDescending<LevelPoint, string>((LevelPoint point) => ((Object)point).name, StringComparer.OrdinalIgnoreCase)); List<LevelPoint> list = source2.ToList(); ((TMP_Text)_countText).text = $"{list.Count} level points · pinned {GetPinnedPointLabel()}"; if (list.Count == 0) { RenderEmptyState("No Level Points Found", "Load into a generated level to teleport or pin a level point for later spawns."); return; } foreach (LevelPoint point2 in list) { bool pinned = (Object)(object)ResolvePinnedTeleportPoint() == (Object)(object)point2; CreateEntryCard(((Object)point2).name.ToUpperInvariant(), BuildTeleportMeta(point2, playerPos, pinned), "WARP", delegate { TeleportToPoint(point2); }, pinned ? "UNPIN" : "PIN", delegate { if (pinned) { _pinnedTeleportPoint = null; _pinnedTeleportPointName = string.Empty; RefreshCurrentTab(); SetActionFeedback("Cleared pinned anchor for teleport points."); } else { PinTeleportPoint(point2); RefreshCurrentTab(); SetActionFeedback("Pinned '" + ((Object)point2).name + "' as the spawn anchor."); } }, pinned, "Warp locally to '" + ((Object)point2).name + "', or pin it as the shared spawn anchor for enemies, valuables, and items."); } } private List<string> ApplySearchAndSort(IEnumerable<string> source, string search) { string search2 = search; IEnumerable<string> source2 = source; if (!string.IsNullOrWhiteSpace(search2)) { source2 = source2.Where((string name) => name.IndexOf(search2, StringComparison.OrdinalIgnoreCase) >= 0); } source2 = (_sortAscending.Value ? source2.OrderBy<string, string>((string name) => name, StringComparer.OrdinalIgnoreCase) : source2.OrderByDescending<string, string>((string name) => name, StringComparer.OrdinalIgnoreCase)); return source2.ToList(); } private void RenderEmptyState(string title, string body) { //IL_000e: 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_0050: Expected O, but got Unknown //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateCard("EmptyState", _contentContainer, _surface); val.AddComponent<LayoutElement>().preferredHeight = 120f; VerticalLayoutGroup val2 = val.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 8f; ((LayoutGroup)val2).padding = new RectOffset(20, 20, 20, 20); ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = false; TextMeshProUGUI val3 = CreateTextMeshPro("Title", val.transform, title.ToUpperInvariant(), 18f, _fg, (TextAlignmentOptions)513); ((TMP_Text)val3).fontStyle = (FontStyles)1; TextMeshProUGUI val4 = CreateTextMeshPro("Body", val.transform, body, 13f, _mutedCol, (TextAlignmentOptions)257); ((TMP_Text)val4).enableWordWrapping = true; } private GameObject CreateEntryCard(string title, string meta, string primaryLabel, Action primaryAction, string? secondaryLabel = null, Action? secondaryAction = null, bool highlight = false, string? hoverStatus = null) { //IL_0030: 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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Expected O, but got Unknown //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Expected O, but got Unknown Action primaryAction2 = primaryAction; Action secondaryAction2 = secondaryAction; GameObject val = CreateCard("EntryCard", _contentContainer, highlight ? _surfaceLift : _surface); val.AddComponent<LayoutElement>().preferredHeight = ((secondaryLabel == null) ? 84f : 92f); HorizontalLayoutGroup val2 = val.AddComponent<HorizontalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val2).spacing = 12f; ((LayoutGroup)val2).padding = new RectOffset(16, 16, 14, 14); ((LayoutGroup)val2).childAlignment = (TextAnchor)3; ((HorizontalOrVerticalLayoutGroup)val2).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val2).childControlHeight = true; GameObject val3 = CreateUIElement("Copy", val.transform); val3.AddComponent<LayoutElement>().flexibleWidth = 1f; VerticalLayoutGroup val4 = val3.AddComponent<VerticalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val4).spacing = 4f; ((HorizontalOrVerticalLayoutGroup)val4).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val4).childControlHeight = false; TextMeshProUGUI val5 = CreateTextMeshPro("EntryTitle", val3.transform, title, 16f, _fg, (TextAlignmentOptions)513); ((TMP_Text)val5).fontStyle = (FontStyles)1; TextMeshProUGUI val6 = CreateTextMeshPro("EntryMeta", val3.transform, meta, 12f, highlight ? _success : _mutedCol, (TextAlignmentOptions)257); ((TMP_Text)val6).enableWordWrapping = true; GameObject val7 = CreateUIElement("Actions", val.transform); HorizontalLayoutGroup val8 = val7.AddComponent<HorizontalLayoutGroup>(); ((HorizontalOrVerticalLayoutGroup)val8).spacing = 8f; ((HorizontalOrVerticalLayoutGroup)val8).childControlWidth = true; ((HorizontalOrVerticalLayoutGroup)val8).childControlHeight = true; GameObject val9 = CreateButton("PrimaryAction", val7.transform, primaryLabel, primary: true); val9.AddComponent<LayoutElement>().preferredWidth = 92f; ((UnityEvent)val9.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { primaryAction2(); }); if (!string.IsNullOrWhiteSpace(secondaryLabel) && secondaryAction2 != null) { GameObject val10 = CreateButton("SecondaryAction", val7.transform, secondaryLabel, primary: false); val10.AddComponent<LayoutElement>().preferredWidth = 78f; ((UnityEvent)val10.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { secondaryAction2(); }); } if (!string.IsNullOrWhiteSpace(hoverStatus)) { AttachHoverStatus(val, hoverStatus); } return val; } private void AttachHoverStatus(GameObject target, string hoverStatus) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_004c: Expected O, but got Unknown //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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown string hoverStatus2 = hoverStatus; if (_showTooltips.Value && !string.IsNullOrWhiteSpace(hoverStatus2)) { EventTrigger val = target.AddComponent<EventTrigger>(); Entry val2 = new Entry { eventID = (EventTriggerType)0 }; ((UnityEvent<BaseEventData>)(object)val2.callback).AddListener((UnityAction<BaseEventData>)delegate { ShowTooltip(hoverStatus2); }); val.triggers.Add(val2); Entry val3 = new Entry { eventID = (EventTriggerType)1 }; ((UnityEvent<BaseEventData>)(object)val3.callback).AddListener((UnityAction<BaseEventData>)delegate { HideTooltip(); }); val.triggers.Add(val3); } } private void ShowTooltip(string text) { if ((Object)(object)_statusText != (Object)null && !string.IsNullOrWhiteSpace(text)) { ((TMP_Text)_statusText).text = text; } } private void HideTooltip() { if ((Object)(object)_statusText != (Object)null) { ((TMP_Text)_statusText).text = _baseStatus; } } private string BuildTabStatus() { string sessionModeLabel = GetSessionModeLabel(); int tabIndex = _tabIndex; if (1 == 0) { } string result = tabIndex switch { 0 => $"{sessionModeLabel} · Enemy setups spawn x{_spawnQuantity.Value} at {GetSpawnOriginLabel()}.", 1 => $"{sessionModeLabel} · Valuables spawn x{_spawnQuantity.Value} at {GetSpawnOriginLabel()}.", 2 => $"{sessionModeLabel} · Items spawn x{_spawnQuantity.Value} at {GetSpawnOriginLabel()}.", 3 => "Local-only teleport browser. Pin any level point to reuse it as the shared spawn anchor.", _ => _baseStatus, }; if (1 == 0) { } return result; } private string GetSessionModeLabel() { if (!InRoom()) { return "Offline session"; } if (IsSoloRoom()) { return "Solo room"; } if (IsHost()) { return "Host session"; } return "Client session"; } private void SetStatus(string text, bool keepAsBase) { if (keepAsBase) { _baseStatus = text; } if ((Object)(object)_statusText != (Object)null) { ((TMP_Text)_statusText).text = text; } UpdateChrome(); } private void SetActionFeedback(string text) { _lastAction = text; SetStatus(text, keepAsBase: true); } private void UpdateChrome() { //IL_00a9: 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) if ((Object)(object)_spawnQuantityValueText != (Object)null) { ((TMP_Text)_spawnQuantityValueText).text = $"x{_spawnQuantity.Value}"; } if ((Object)(object)_spawnOriginValueText != (Object)null) { ((TMP_Text)_spawnOriginValueText).text = GetSpawnOriginButtonLabel().ToUpperInvariant(); } if ((Object)(object)_sortValueText != (Object)null) { ((TMP_Text)_sortValueText).text = (_sortAscending.Value ? "A-Z" : "Z-A"); } if ((Object)(object)_sceneBadgeText != (Object)null) { TextMeshProUGUI sceneBadgeText = _sceneBadgeText; Scene activeScene = SceneManager.GetActiveScene(); ((TMP_Text)sceneBadgeText).text = ((Scene)(ref activeScene)).name.ToUpperInvariant() + "\n" + GetSessionModeLabel().ToUpperInvariant(); } if ((Object)(object)_summaryText != (Object)null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine($"Enemies: {_enemyNames.Count}"); stringBuilder.AppendLine($"Valuables: {_valuableNames.Count}"); stringBuilder.AppendLine($"Items: {_itemNames.Count}"); stringBuilder.AppendLine("Anchor: " + GetPinnedPointLabel()); stringBuilder.Append("Last: " + SummarizeActionText(_lastAction, 28)); ((TMP_Text)_summaryText).text = stringBuilder.ToString(); } } private IEnumerator DiscoverRoutine() { if (_discovering) { yield break; } _discovering = true; if ((Object)(object)_refreshButton != (Object)null) { ((Selectable)_refreshButton).interactable = false; } _enemyNames.Clear(); _valuableNames.Clear(); _itemNames.Clear(); _enemyByKey.Clear(); _valuableByKey.Clear(); _itemByKey.Clear(); SetStatus("Scanning enemy setups from the current Assembly-CSharp build...", keepAsBase: true); yield return null; int enemyCount = 0; try { HashSet<string> set = new HashSet<string>(StringComparer.OrdinalIgnoreCase); EnemySetup[] array = Resources.FindObjectsOfTypeAll<EnemySetup>(); foreach (EnemySetup setup in array) { if (!((Object)(object)setup == (Object)null) && setup.spawnObjects != null && setup.spawnObjects.Count != 0) { string display = NormalizeName(((Object)setup).name, RxEnemyTrim); if (!string.IsNullOrWhiteSpace(display)) { _enemyByKey[display.ToLowerInvariant()] = setup; set.Add(display); } } } _enemyNames.AddRange(set.OrderBy<string, string>((string name) => name, StringComparer.OrdinalIgnoreCase)); enemyCount = _enemyNames.Count; } catch (Exception ex2) { Logger.LogWarning((object)("Enemy discovery failed: " + ex2.Message)); } SetStatus("Scanning valuable prefab references from live level presets...", keepAsBase: true); yield return null; int valuableCount = 0; try { HashSet<string> set2 = new HashSet<string>(StringComparer.OrdinalIgnoreCase); if ((Object)(object)RunManager.instance != (Object)null && RunManager.instance.levels != null) { foreach (Level level in RunManager.instance.levels) { if ((Object)(object)level == (Object)null || level.ValuablePresets == null) { continue; } foreach (LevelValuables preset in level.ValuablePresets) { AddValuableEntries(preset, set2); } } } _valuableNames.AddRange(set2.OrderBy<string, string>((string name) => name, StringComparer.OrdinalIgnoreCase)); valuableCount = _valuableNames.Count; } catch (Exception ex3) { Logger.LogWarning((object)("Valuable discovery failed: " + ex3.Message)); } SetStatus("Scanning items, upgrades, and shop pools from the active run...", keepAsBase: true); yield return null; int itemCount = 0; try { HashSet<string> set3 = new HashSet<string>(StringComparer.OrdinalIgnoreCase); if ((Object)(object)ShopManager.instance != (Object)null) { foreach (Item item2 in ShopManager.instance.potentialItems) { AddItemEntry(item2, set3); } foreach (Item item5 in ShopManager.instance.potentialItemConsumables) { AddItemEntry(item5, set3); } foreach (Item item4 in ShopManager.instance.potentialItemUpgrades) { AddItemEntry(item4, set3); } } if ((Object)(object)StatsManager.instance != (Object)null) { foreach (Item item3 in StatsManager.instance.itemDictionary.Values) { AddItemEntry(item3, set3); } } if ((Object)(object)ItemManager.instance != (Object)null) { foreach (Item item in ItemManager.instance.purchasedItems) { AddItemEntry(item, set3); } } _itemNames.AddRange(set3.OrderBy<string, string>((string name) => name, StringComparer.OrdinalIgnoreCase)); itemCount = _itemNames.Count; } catch (Exception ex) { Logger.LogWarning((object)("Item discovery failed: " + ex.Message)); } _discovered = enemyCount + valuableCount + itemCount > 0; _discovering = false; if ((Object)(object)_refreshButton != (Object)null) { ((Selectable)_refreshButton).interactable = true; } SetStatus(_discovered ? $"Discovery complete. Found {enemyCount} enemy setups, {valuableCount} valuables, and {itemCount} items." : "Discovery complete, but no live spawn data was found. Load into a run and rescan.", keepAsBase: true); Logger.LogInfo((object)$"Discovered {enemyCount} enemies, {valuableCount} valuables, {itemCount} items."); if (_uiVisible) { RefreshCurrentTab(); } } private void AddValuableEntries(LevelValuables? preset, HashSet<string> set) { if ((Object)(object)preset == (Object)null) { return; } foreach (PrefabRef item in EnumeratePrefabRefs(preset.tiny)) { AddValuableEntry(item, set); } foreach (PrefabRef item2 in EnumeratePrefabRefs(preset.small)) { AddValuableEntry(item2, set); } foreach (PrefabRef item3 in EnumeratePrefabRefs(preset.medium)) { AddValuableEntry(item3, set); } foreach (PrefabRef item4 in EnumeratePrefabRefs(preset.big)) { AddValuableEntry(item4, set); } foreach (PrefabRef item5 in EnumeratePrefabRefs(preset.wide)) { AddValuableEntry(item5, set); } foreach (PrefabRef item6 in EnumeratePrefabRefs(preset.tall)) { AddValuableEntry(item6, set); } foreach (PrefabRef item7 in EnumeratePrefabRefs(preset.veryTall)) { AddValuableEntry(item7, set); } } private void AddValuableEntry(PrefabRef? prefab, HashSet<string> set) { if (prefab != null && prefab.IsValid()) { string text = NormalizeName(prefab.PrefabName, RxValuableTrim); if (!string.IsNullOrWhiteSpace(text)) { _valuableByKey[text.ToLowerInvariant()] = prefab; set.Add(text); } } } private void AddItemEntry(Item? item, HashSet<string> set) { if (!((Object)(object)item == (Object)null) && item.prefab != null && item.prefab.IsValid()) { string text = NormalizeName(item.itemName, RxItemTrim); if (string.IsNullOrWhiteSpace(text)) { text = NormalizeName(((Object)item).name, RxItemTrim); } if (!string.IsNullOrWhiteSpace(text)) { _itemByKey[text.ToLowerInvariant()] = item; set.Add(text); } } } private void SpawnEnemy(string displayName) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_00c2: 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) if (!IsHostOrOffline()) { SetActionFeedback("Enemy spawning is blocked for clients. Host or offline only."); return; } if (!_enemyByKey.TryGetValue(displayName.Trim().ToLowerInvariant(), out EnemySetup value) || (Object)(object)value == (Object)null) { SetActionFeedback("Enemy setup '" + displayName + "' is no longer available in the current scan."); return; } string anchorLabel; Vector3 val = ResolveSpawnBasePosition(out anchorLabel); int num = 0; EnemyDirector instance = EnemyDirector.instance; bool debugSpawnClose = (Object)(object)instance != (Object)null && instance.debugSpawnClose; try { if ((Object)(object)instance != (Object)null) { instance.debugSpawnClose = true; } for (int i = 0; i < _spawnQuantity.Value; i++) { if (SpawnEnemySetupAt(value, val + GetSpawnOffset(i, _spawnQuantity.Value, 2.4f))) { num++; } } SetActionFeedback($"Spawned {num}/{_spawnQuantity.Value} '{displayName}' at {anchorLabel}."); } catch (Exception ex) { Logger.LogWarning((object)("Enemy spawn failed: " + ex.Message)); SetActionFeedback("Enemy spawn failed for '" + displayName + "'."); } finally { if ((Object)(object)instance != (Object)null) { instance.debugSpawnClose = debugSpawnClose; } } } private bool SpawnEnemySetupAt(EnemySetup setup, Vector3 spawnPos) { //IL_002f: 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_00d2: Unknown result type (might be due to invalid IL or missing references) bool result = false; foreach (PrefabRef spawnObject in setup.spawnObjects) { if (spawnObject == null) { continue; } GameObject val = InstantiatePrefabRef(spawnObject, spawnPos, Quaternion.identity); if (!Object.op_Implicit((Object)(object)val)) { continue; } if (InRoom() && !HasValidPhotonView(val)) { try { Object.Destroy((Object)(object)val); } catch { } continue; } result = true; EnemyParent component = val.GetComponent<EnemyParent>(); if ((Object)(object)component != (Object)null) { try { component.SetupDone = true; } catch { } try { component.firstSpawnPointUsed = true; } catch { } } Enemy componentInChildren = val.GetComponentInChildren<Enemy>(); if ((Object)(object)componentInChildren != (Object)null) { try { componentInChildren.EnemyTeleported(spawnPos); } catch { } } } return result; } private void SpawnValuable(string displayName) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) if (!IsHostOrOffline()) { SetActionFeedback("Valuable spawning is blocked for clients. Host or offline only."); return; } if (!_valuableByKey.TryGetValue(displayName.Trim().ToLowerInvariant(), out PrefabRef value) || value == null) { SetActionFeedback("Valuable '" + displayName + "' is no longer available in the current scan."); return; } string anchorLabel; Vector3 val = ResolveSpawnBasePosition(out anchorLabel) + Vector3.up; int num = 0; for (int i = 0; i < _spawnQuantity.Value; i++) { try { GameObject val2 = InstantiatePrefabRef(value, val + GetSpawnOffset(i, _spawnQuantity.Value, 1.35f), Quaternion.identity); if (!Object.op_Implicit((Object)(object)val2)) { continue; } if (InRoom() && !HasValidPhotonView(val2)) { Object.Destroy((Object)(object)val2); continue; } ValuableObject component = val2.GetComponent<ValuableObject>(); if (component != null) { component.DollarValueSetLogic(); } num++; } catch (Exception ex) { Logger.LogWarning((object)("Valuable spawn failed: " + ex.Message)); } } SetActionFeedback($"Spawned {num}/{_spawnQuantity.Value} '{displayName}' at {anchorLabel}."); } private void SpawnItem(string displayName) { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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) if (!IsHostOrOffline()) { SetActionFeedback("Item spawning is blocked for clients. Host or offline only."); return; } if (!_itemByKey.TryGetValue(displayName.Trim().ToLowerInvariant(), out Item value) || (Object)(object)value == (Object)null || value.prefab == null) { SetActionFeedback("Item '" + displayName + "' is no longer available in the current scan."); return; } Quaternion rot = value.spawnRotationOffset; if ((Object)(object)ShopManager.instance != (Object)null && (Object)(object)ShopManager.instance.itemRotateHelper != (Object)null) { rot = ShopManager.instance.itemRotateHelper.rotation; } string anchorLabel; Vector3 val = ResolveSpawnBasePosition(out anchorLabel) + Vector3.up; int num = 0; for (int i = 0; i < _spawnQuantity.Value; i++) { try { GameObject val2 = InstantiatePrefabRef(value.prefab, val + GetSpawnOffset(i, _spawnQuantity.Value, 1.2f), rot); if (Object.op_Implicit((Object)(object)val2)) { if (InRoom() && !HasValidPhotonView(val2)) { Object.Destroy((Object)(object)val2); } else { num++; } } } catch (Exception ex) { Logger.LogWarning((object)("Item spawn failed: " + ex.Message)); } } SetActionFeedback($"Spawned {num}/{_spawnQuantity.Value} '{displayName}' at {anchorLabel}."); } private Vector3 ResolveSpawnBasePosition(out string anchorLabel) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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) switch (_spawnOriginMode.Value) { case 1: anchorLabel = "player position"; return GetPlayerPosition(); case 2: { LevelPoint val = ResolvePinnedTeleportPoint(); if ((Object)(object)val != (Object)null) { anchorLabel = "pinned point '" + ((Object)val).name + "'"; return ((Component)val).transform.position; } break; } } LevelPoint closestLevelPoint = GetClosestLevelPoint(); if ((Object)(object)closestLevelPoint != (Object)null) { anchorLabel = "closest point '" + ((Object)closestLevelPoint).name + "'"; return ((Component)closestLevelPoint).transform.position; } anchorLabel = "player position"; return GetPlayerPosition(); } private string GetSpawnOriginLabel() { int value = _spawnOriginMode.Value; if (1 == 0) { } string result = value switch { 0 => "closest level point", 1 => "player position", 2 => ((Object)(object)ResolvePinnedTeleportPoint() != (Object)null) ? ("pinned point '" + ((Object)ResolvePinnedTeleportPoint()).name + "'") : "pinned point (not set)", _ => "closest level point", }; if (1 == 0) { } return result; } private string GetSpawnOriginButtonLabel() { int value = _spawnOriginMode.Value; if (1 == 0) { } string result = value switch { 0 => "nearest point", 1 => "player", 2 => ((Object)(object)ResolvePinnedTeleportPoint() != (Object)null) ? "pinned point" : "pin a point", _ => "nearest point", }; if (1 == 0) { } return result; } private string GetResolvedSpawnOriginLabel() { //IL_0004: Unknown result type (might be due to invalid IL or missing references) ResolveSpawnBasePosition(out string anchorLabel); return anchorLabel; } private LevelPoint? ResolvePinnedTeleportPoint() { if ((Object)(object)_pinnedTeleportPoint != (Object)null) { return _pinnedTeleportPoint; } if (string.IsNullOrWhiteSpace(_pinnedTeleportPointName)) { return null; } _pinnedTeleportPoint = ((IEnumerable<LevelPoint>)Object.FindObjectsOfType<LevelPoint>()).FirstOrDefault((Func<LevelPoint, bool>)((LevelPoint point) => (Object)(object)point != (Object)null && string.Equals(((Object)point).name, _pinnedTeleportPointName, StringComparison.OrdinalIgnoreCase))); return _pinnedTeleportPoint; } private void PinTeleportPoint(LevelPoint point) { _pinnedTeleportPoint = point; _pinnedTeleportPointName = ((Object)point).name; } private string GetPinnedPointLabel() { LevelPoint val = ResolvePinnedTeleportPoint(); return ((Object)(object)val != (Object)null) ? ("'" + ((Object)val).name + "'") : "none"; } private string BuildTeleportMeta(LevelPoint point, Vector3 playerPos, bool pinned) { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) List<string> list = new List<string>(); if (pinned) { list.Add("Pinned anchor"); } if (point.inStartRoom) { list.Add("Start room"); } if (point.Truck) { list.Add("Truck"); } if (point.ModuleConnect) { list.Add("Connector"); } if ((Object)(object)point.Room != (Object)null) { list.Add(((Object)point.Room).name); } list.Add($"{Vector3.Distance(playerPos, ((Component)point).transform.position):0.0}m away"); return string.Join(" · ", list.Where((string token) => !string.IsNullOrWhiteSpace(token))); } private void TeleportToPoint(LevelPoint point) { //IL_0066: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) PlayerController playerController = GetPlayerController(); if ((Object)(object)playerController == (Object)null) { SetActionFeedback("Teleport failed because the local player controller was not found."); return; } try { if ((Object)(object)playerController.rb != (Object)null) { playerController.rb.velocity = Vector3.zero; playerController.rb.angularVelocity = Vector3.zero; } ((Component)playerController).transform.position = ((Component)point).transform.position + Vector3.up * 1.35f; ((Component)playerController).transform.rotation = Quaternion.Euler(0f, ((Component)point).transform.eulerAngles.y, 0f); SetActionFeedback("Warped to '" + ((Object)point).name + "'."); } catch (Exception ex) { Logger.LogWarning((object)("Teleport failed: " + ex.Message)); SetActionFeedback("Teleport failed for '" + ((Object)point).name + "'."); } } private Vector3 GetSpawnOffset(int index, int total, float radius) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (total <= 1) { return Vector3.zero; } float num = 360f / (float)Mathf.Max(total, 1) * (float)index; return Quaternion.Euler(0f, num, 0f) * Vector3.forward * radius; } private GameObject InstantiatePrefabRef(PrefabRef prefabRef, Vector3 pos, Quaternion rot) { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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) if (prefabRef == null || !prefabRef.IsValid()) { return null; } if (InRoom() && !IsHost()) { return null; } try { if (InRoom() && PhotonNetwork.IsConnectedAndReady) { if (string.IsNullOrWhiteSpace(prefabRef.ResourcePath)) { return null; } return PhotonNetwork.Instantiate(prefabRef.ResourcePath, pos, rot, (byte)0, (object[])null); } if ((Object)(object)prefabRef.Prefab != (Object)null) { return Object.Instantiate<GameObject>(prefabRef.Prefab, pos, rot); } if (!string.IsNullOrWhiteSpace(prefabRef.ResourcePath)) { GameObject val = Resources.Load<GameObject>(prefabRef.ResourcePath); if ((Object)(object)val != (Object)null) { return Object.Instantiate<GameObject>(val, pos, rot); } } } catch (Exception ex) { Logger.LogWarning((object)("InstantiatePrefabRef failed for '" + prefabRef.PrefabName + "': " + ex.Message)); } return null; } private static bool HasValidPhotonView(GameObject go) { try { return go.GetComponentsInChildren<PhotonView>(true)?.Any((PhotonView view) => (Object)(object)view != (Object)null && view.ViewID != 0) ?? false; } catch { return false; } } private static LevelPoint? GetClosestLevelPoint() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)LevelGenerator.Instance != (Object)null && LevelGenerator.Instance.LevelPathPoints != null && LevelGenerator.Instance.LevelPathPoints.Count > 0) { Vector3 playerPosition = GetPlayerPosition(); LevelPoint val = null; float num = float.MaxValue; foreach (LevelPoint levelPathPoint in LevelGenerator.Instance.LevelPathPoints) { if (!((Object)(object)levelPathPoint == (Object)null)) { float num2 = Vector3.SqrMagnitude(((Component)levelPathPoint).transform.position - playerPosition); if (num2 < num) { num = num2; val = levelPathPoint; } } } if ((Object)(object)val != (Object)null) { return val; } } } catch { } try { return (from point in Object.FindObjectsOfType<LevelPoint>() where (Object)(object)point != (Object)null orderby Vector3.SqrMagnitude(((Component)point).transform.position - GetPlayerPosition()) select point).FirstOrDefault(); } catch { return null; } } private static PlayerController? GetPlayerController() { try { if ((Object)(object)PlayerController.instance != (Object)null) { return PlayerController.instance; } } catch { } try { return Object.FindObjectOfType<PlayerController>(); } catch { return null; } } private static Vector3 GetPlayerPosition() { //IL_0018: 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_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_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_0049: Unknown result type (might be due to invalid IL or missing references) PlayerController playerController = GetPlayerController(); if ((Object)(object)playerController != (Object)null) { return ((Component)playerController).transform.position; } if ((Object)(object)Camera.main != (Object)null) { return ((Component)Camera.main).transform.position; } return Vector3.zero; } private static string NormalizeName(string? raw, Regex trimRegex) { if (string.IsNullOrWhiteSpace(raw)) { return string.Empty; } return trimRegex.Replace(raw, string.Empty).Trim().Replace("_", " ") .Trim(); } private static string SummarizeActionText(string? text, int maxLength) { if (string.IsNullOrWhiteSpace(text)) { return "Ready."; } if (text.Length <= maxLength) { return text; } return text.Substring(0, Math.Max(0, maxLength - 3)).TrimEnd() + "..."; } private static IEnumerable<PrefabRef> EnumeratePrefabRefs(List<PrefabRef>? refs) { if (refs == null) { yield break; } foreach (PrefabRef prefabRef in refs) { if (prefabRef != null) { yield return prefabRef; } } } private static bool InRoom() { try { return PhotonNetwork.InRoom && PhotonNetwork.CurrentRoom != null; } catch { return false; } } private static bool IsSoloRoom() { try { return InRoom() && PhotonNetwork.CurrentRoom.PlayerCount <= 1; } catch { return false; } } private static bool IsHost() { try { return InRoom() && PhotonNetwork.IsMasterClient; } catch { return false; } } private static bool IsHostOrOffline() { try { if (!InRoom()) { return true; } if (IsSoloRoom()) { return true; } return PhotonNetwork.IsMasterClient; } catch { return true; } } private void TakeCursor() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) _prevLock = Cursor.lockState; _prevVisible = Cursor.visible; try { CursorManager instance = CursorManager.instance; if (instance != null) { instance.Unlock(9999f); } } catch { } Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; } private void KeepCursorFree() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 if ((int)Cursor.lockState > 0) { Cursor.lockState = (CursorLockMode)0; } if (!Cursor.visible) { Cursor.visible = true; } } private void RestoreCursor() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)CursorManager.instance != (Object)null) { CursorManager.instance.unlockTimer = -1234f; } } catch { } Cursor.lockState = _prevLock; Cursor.visible = _prevVisible; try { if (((int)_prevLock != 0 || !_prevVisible) && (Object)(object)MenuCursor.instance != (Object)null) { MenuCursor.instance.showTimer = 0f; ((Component)MenuCursor.instance).transform.localScale = Vector3.zero; if ((Object)(object)MenuCursor.instance.mesh != (Object)null) { MenuCursor.instance.mesh.SetActive(false); } } } catch { } } private GameObject CreateUIElement(string name, Transform parent) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown GameObject val = new GameObject(name, new Type[1] { typeof(RectTransform) }); val.transform.SetParent(parent, false); return val; } private GameObject CreateCard(string name, Transform parent, Color color) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIElement(name, parent); ((Graphic)val.AddComponent<Image>()).color = color; Outline val2 = val.AddComponent<Outline>(); ((Shadow)val2).effectColor = new Color(_accentBase.r, _accentBase.g, _accentBase.b, 0.14f); ((Shadow)val2).effectDistance = new Vector2(1f, -1f); return val; } private GameObject CreateButton(string name, Transform parent, stri