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 CommandQueueExtended v2.0.0
CommandQueue.dll
Decompiled 6 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using HG; using On.RoR2; using On.RoR2.Artifacts; using On.RoR2.UI; using RoR2; using RoR2.Artifacts; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CommandQueue")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+5e30264f4c2dbd72f0d76cccb05182f498ae1b06")] [assembly: AssemblyProduct("CommandQueue")] [assembly: AssemblyTitle("CommandQueue")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] namespace CommandQueue; [BepInPlugin("com.kuberoot.commandqueuewithsave", "CommandQueueWithSave", "2.0.0")] public class CommandQueue : BaseUnityPlugin { [CompilerGenerated] private sealed class <<CommandArtifactManager_Init>g__coroutine|10_0>d : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <<CommandArtifactManager_Init>g__coroutine|10_0>d(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if ((Object)(object)CommandArtifactManager.commandCubePrefab == (Object)null) { <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; } GameObject commandCubePrefab = CommandArtifactManager.commandCubePrefab; commandUIPrefab = ((commandCubePrefab != null) ? commandCubePrefab.GetComponent<PickupPickerController>().panelPrefab : null); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <<FakeReload>g__doFakeReload|7_0>d : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public CommandQueue <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <<FakeReload>g__doFakeReload|7_0>d(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; CommandQueue commandQueue = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = 0; <>1__state = 1; return true; case 1: <>1__state = -1; commandQueue.OnDisable(); <>2__current = 0; <>1__state = 2; return true; case 2: <>1__state = -1; commandQueue.OnEnable(); commandQueue.isFakeReloading = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <>c__DisplayClass11_0 { public PickupPickerController self; } [CompilerGenerated] private sealed class <>c__DisplayClass11_1 { public int j; public <>c__DisplayClass11_0 CS$<>8__locals1; } public static bool IsLoaded; private static GameObject commandUIPrefab; private bool isFakeReloading; public static event Action PluginUnloaded; public void Awake() { ModConfig.OnReady += delegate { ModConfig.enabledTabs.SettingChanged += delegate { FakeReload(); }; ModConfig.bigItemButtonContainer.SettingChanged += delegate { FakeReload(); }; ModConfig.bigItemButtonScale.SettingChanged += delegate { FakeReload(); }; }; ModConfig.InitConfig(((BaseUnityPlugin)this).Config); } private void FakeReload() { if (!isFakeReloading) { isFakeReloading = true; ((MonoBehaviour)this).StartCoroutine(doFakeReload()); } [IteratorStateMachine(typeof(<<FakeReload>g__doFakeReload|7_0>d))] IEnumerator doFakeReload() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <<FakeReload>g__doFakeReload|7_0>d(0) { <>4__this = this }; } } public void OnEnable() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown GameObject commandCubePrefab = CommandArtifactManager.commandCubePrefab; commandUIPrefab = ((commandCubePrefab != null) ? commandCubePrefab.GetComponent<PickupPickerController>().panelPrefab : null); IsLoaded = true; PickupPickerController.OnDisplayBegin += new hook_OnDisplayBegin(HandleCommandDisplayBegin); ScoreboardController.Awake += new hook_Awake(ScoreboardController_Awake); CommandArtifactManager.Init += new hook_Init(CommandArtifactManager_Init); QueueManager.Enable(); HUD[] array = Object.FindObjectsOfType<HUD>(); for (int i = 0; i < array.Length; i++) { array[i].scoreboardPanel.AddComponent<UIManager>(); } } public void OnDisable() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown IsLoaded = false; CommandQueue.PluginUnloaded?.Invoke(); PickupPickerController.OnDisplayBegin -= new hook_OnDisplayBegin(HandleCommandDisplayBegin); ScoreboardController.Awake -= new hook_Awake(ScoreboardController_Awake); CommandArtifactManager.Init -= new hook_Init(CommandArtifactManager_Init); QueueManager.Disable(); } private void CommandArtifactManager_Init(orig_Init orig) { orig.Invoke(); ((MonoBehaviour)this).StartCoroutine(coroutine()); [IteratorStateMachine(typeof(<<CommandArtifactManager_Init>g__coroutine|10_0>d))] static IEnumerator coroutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <<CommandArtifactManager_Init>g__coroutine|10_0>d(0); } } private void HandleCommandDisplayBegin(orig_OnDisplayBegin orig, PickupPickerController self, NetworkUIPromptController networkUIPromptController, LocalUser localUser, CameraRigController cameraRigController) { //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_0044: 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) //IL_0050: 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) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) <>c__DisplayClass11_0 <>c__DisplayClass11_ = new <>c__DisplayClass11_0(); <>c__DisplayClass11_.self = self; if ((Object)(object)<>c__DisplayClass11_.self.panelPrefab == (Object)(object)commandUIPrefab) { foreach (var (tier, val) in QueueManager.PeekAll()) { if (!<>c__DisplayClass11_.self.IsChoiceAvailable(val)) { continue; } QueueManager.Pop(tier); Option[] options = <>c__DisplayClass11_.self.options; <>c__DisplayClass11_1 CS$<>8__locals0 = new <>c__DisplayClass11_1(); CS$<>8__locals0.CS$<>8__locals1 = <>c__DisplayClass11_; CS$<>8__locals0.j = 0; while (CS$<>8__locals0.j < options.Length) { if (options[CS$<>8__locals0.j].pickup.pickupIndex == val && options[CS$<>8__locals0.j].available) { ((MonoBehaviour)CS$<>8__locals0.CS$<>8__locals1.self).StartCoroutine(submitChoiceNextFrame()); break; } CS$<>8__locals0.j++; } return; [IteratorStateMachine(typeof(<>c__DisplayClass11_1.<<HandleCommandDisplayBegin>g__submitChoiceNextFrame|0>d))] IEnumerator submitChoiceNextFrame() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <>c__DisplayClass11_1.<<HandleCommandDisplayBegin>g__submitChoiceNextFrame|0>d(0) { <>4__this = CS$<>8__locals0 }; } } } orig.Invoke(<>c__DisplayClass11_.self, networkUIPromptController, localUser, cameraRigController); } private void ScoreboardController_Awake(orig_Awake orig, ScoreboardController self) { ((Component)self).gameObject.AddComponent<UIManager>(); orig.Invoke(self); } } public static class ModConfig { public class ItemTierSet : SortedSet<ItemTier> { public static Dictionary<ItemTier, string> ItemTierToName = new Dictionary<ItemTier, string>(); public static Dictionary<string, ItemTier> NameToItemTier = new Dictionary<string, ItemTier>(); internal static void Initialize() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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) ItemTierToName.Clear(); NameToItemTier.Clear(); Enumerator<ItemTierDef> enumerator = ItemTierCatalog.allItemTierDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { ItemTierDef current = enumerator.Current; ItemTierToName[current.tier] = ((Object)current).name; NameToItemTier[((Object)current).name] = current.tier; } } finally { ((IDisposable)enumerator).Dispose(); } } public static string Serialize(ItemTierSet self) { string value; return string.Join(", ", self.Select((ItemTier x) => (!ItemTierToName.TryGetValue(x, out value)) ? ((object)(ItemTier)(ref x)).ToString() : value)); } public static ItemTierSet Deserialize(string src) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) ItemTierSet itemTierSet = new ItemTierSet(); foreach (string item in from s in src.Split(',') select s.Trim()) { int result; if (NameToItemTier.TryGetValue(item, out var value)) { itemTierSet.Add(value); } else if (Enum.TryParse<ItemTier>(item, out value)) { itemTierSet.Add(value); } else if (int.TryParse(item, out result)) { itemTierSet.Add((ItemTier)result); } } return itemTierSet; } public override string ToString() { return Serialize(this); } } public class SaveData { public string id; public string name; public string queueData; public long createdAt; public SaveData() { } public SaveData(string name, string queueData) { id = Guid.NewGuid().ToString("N").Substring(0, 8); this.name = name; this.queueData = queueData; createdAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); } } public class SaveFile { public List<SaveData> saves = new List<SaveData>(); } public static bool Ready; private static ConfigFile config; public static ConfigEntry<ItemTierSet> enabledTabs; public static ConfigEntry<bool> bigItemButtonContainer; public static ConfigEntry<float> bigItemButtonScale; public static ConfigEntry<bool> rightClickRemovesStack; private const string SaveFileName = "commandQueueSaves.json"; private static SaveFile _saveFile; private static string SaveFilePath => Path.Combine(Paths.ConfigPath, "commandQueueSaves.json"); public static event Action OnReady; public static event Action OnSavesChanged; internal static void InitConfig(ConfigFile _config) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown config = _config; TomlTypeConverter.AddConverter(typeof(ItemTierSet), new TypeConverter { ConvertToObject = (string str, Type type) => ItemTierSet.Deserialize(str), ConvertToString = (object obj, Type type) => obj.ToString() }); ((ResourceAvailability)(ref ItemTierCatalog.availability)).CallWhenAvailable((Action)InitConfigInternal); } internal static void InitConfigInternal() { //IL_001c: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Expected O, but got Unknown //IL_00c1: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown //IL_00f0: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Expected O, but got Unknown //IL_0123: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0152: Expected O, but got Unknown if (!Ready) { ItemTierSet.Initialize(); enabledTabs = config.Bind<ItemTierSet>(new ConfigDefinition("General", "EnabledQueues"), new ItemTierSet { (ItemTier)0, (ItemTier)1, (ItemTier)2, (ItemTier)4, (ItemTier)3, (ItemTier)6, (ItemTier)7, (ItemTier)8, (ItemTier)9 }, new ConfigDescription("Which item tiers should have queues?\nValid values: " + string.Join(", ", ((IEnumerable<ItemTierDef>)(object)ItemTierCatalog.allItemTierDefs).Select((ItemTierDef def) => GetTierName(def.tier))), (AcceptableValueBase)null, Array.Empty<object>())); bigItemButtonContainer = config.Bind<bool>(new ConfigDefinition("General", "BigItemSelectionContainer"), true, new ConfigDescription("false: Default command button layout\ntrue: Increase the space for buttons, helps avoid overflow with modded items", (AcceptableValueBase)null, Array.Empty<object>())); bigItemButtonScale = config.Bind<float>(new ConfigDefinition("General", "BigItemSelectionScale"), 1f, new ConfigDescription("Scale applied to item buttons in the menu - decrease it if your buttons don't fit\nApplies only if BigItemSelectionContainer is true", (AcceptableValueBase)null, Array.Empty<object>())); rightClickRemovesStack = config.Bind<bool>(new ConfigDefinition("General", "RightClickRemovesStack"), true, new ConfigDescription("Should right-clicking an item in the queue remove the whole stack?", (AcceptableValueBase)null, Array.Empty<object>())); Ready = true; ModConfig.OnReady?.Invoke(); } } public static string GetTierName(ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) if (ItemTierSet.ItemTierToName.TryGetValue(tier, out var value)) { return value; } return ((object)(ItemTier)(ref tier)).ToString(); } public static SaveFile GetSaveFile() { if (_saveFile == null) { LoadSaveFile(); } return _saveFile; } private static void LoadSaveFile() { try { if (File.Exists(SaveFilePath)) { string[] array = File.ReadAllLines(SaveFilePath); _saveFile = new SaveFile(); string[] array2 = array; foreach (string text in array2) { if (!string.IsNullOrWhiteSpace(text)) { string[] array3 = text.Split('|'); if (array3.Length >= 4) { _saveFile.saves.Add(new SaveData { id = array3[0], name = array3[1], queueData = array3[2], createdAt = (long.TryParse(array3[3], out var result) ? result : 0) }); } } } } else { _saveFile = new SaveFile(); } } catch (Exception ex) { Debug.LogError((object)("Error loading save file: " + ex.Message)); _saveFile = new SaveFile(); } } private static void WriteSaveFile() { try { IEnumerable<string> contents = _saveFile.saves.Select((SaveData s) => $"{s.id}|{s.name}|{s.queueData}|{s.createdAt}"); File.WriteAllLines(SaveFilePath, contents); ModConfig.OnSavesChanged?.Invoke(); } catch (Exception ex) { Debug.LogError((object)("Error writing save file: " + ex.Message)); } } public static List<SaveData> GetAllSaves() { return GetSaveFile().saves; } public static void CreateSave(string name) { string queueData = QueueManager.mainQueues.Where((KeyValuePair<ItemTier, List<QueueManager.QueueEntry>> entry) => entry.Value.Count > 0).SelectMany((KeyValuePair<ItemTier, List<QueueManager.QueueEntry>> pair) => pair.Value).Aggregate("", (string current, QueueManager.QueueEntry queueEntry) => current + $"{((object)(PickupIndex)(ref queueEntry.pickupIndex)).ToString()}*{queueEntry.count},"); SaveData item = new SaveData(name, queueData); GetSaveFile().saves.Insert(0, item); WriteSaveFile(); } public static void LoadSave(string id) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) SaveData saveData = GetSaveFile().saves.FirstOrDefault((SaveData s) => s.id == id); if (saveData == null) { return; } QueueManager.ClearAllQueues(); if (string.IsNullOrEmpty(saveData.queueData)) { return; } try { string[] array = saveData.queueData.Split(','); foreach (string text in array) { if (!string.IsNullOrEmpty(text)) { string[] array2 = text.Split('*'); for (int j = 0; j < int.Parse(array2[1]); j++) { QueueManager.Enqueue(PickupCatalog.FindPickupIndex(array2[0])); } } } } catch (Exception ex) { Debug.LogError((object)("Error loading save: " + ex.Message)); } } public static void RenameSave(string id, string newName) { SaveData saveData = GetSaveFile().saves.FirstOrDefault((SaveData s) => s.id == id); if (saveData != null) { saveData.name = newName; WriteSaveFile(); } } public static void DeleteSave(string id) { GetSaveFile().saves.RemoveAll((SaveData s) => s.id == id); WriteSaveFile(); } public static int GetSaveItemCount(SaveData save) { if (string.IsNullOrEmpty(save?.queueData)) { return 0; } try { return (from o in save.queueData.Split(',') where !string.IsNullOrEmpty(o) select o.Split('*') into o where o.Length >= 2 select int.Parse(o[1])).Sum(); } catch { return 0; } } public static void MigrateOldSaves() { for (int i = 1; i <= 10; i++) { string path = $"commandQueueSlot_{i}.save"; if (!File.Exists(path)) { continue; } try { string text = File.ReadAllText(path).Trim(); if (!string.IsNullOrEmpty(text)) { SaveData item = new SaveData($"Migrated Slot {i}", text); GetSaveFile().saves.Add(item); } File.Delete(path); } catch { } } if (GetSaveFile().saves.Count > 0) { WriteSaveFile(); } } } internal class QueueDisplay : MonoBehaviour { public class QueueItemBehavior : MonoBehaviour, IBeginDragHandler, IEventSystemHandler, IDragHandler, IEndDragHandler, IPointerClickHandler { private GameObject m_DraggingIcon; private QueueDisplay m_Queue; private ItemIcon m_ItemIcon; public void Init(QueueDisplay queue) { m_Queue = queue; m_ItemIcon = ((Component)this).GetComponent<ItemIcon>(); } public void OnBeginDrag(PointerEventData eventData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: 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) //IL_0009: Invalid comparison between Unknown and I4 //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_00ed: Unknown result type (might be due to invalid IL or missing references) InputButton button = eventData.button; if ((int)button <= 1) { m_DraggingIcon = new GameObject("QueueItemDragIcon"); m_DraggingIcon.transform.SetParent(((Component)m_Queue).transform, false); m_DraggingIcon.transform.SetAsLastSibling(); RawImage obj = m_DraggingIcon.AddComponent<RawImage>(); obj.texture = m_ItemIcon.image.texture; RectTransform rectTransform = ((Graphic)obj).rectTransform; Rect rect = ((Graphic)m_ItemIcon.image).rectTransform.rect; float height = ((Rect)(ref rect)).height; rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); rectTransform.sizeDelta = new Vector2(height, height); ((Transform)rectTransform).localScale = ((Transform)m_ItemIcon.rectTransform).localScale; ((Graphic)obj).color = new Color(1f, 1f, 1f, 0.6f); SetDraggedPosition(eventData); ((AbstractEventData)eventData).Use(); } } public void OnDrag(PointerEventData eventData) { if (Object.op_Implicit((Object)(object)m_DraggingIcon)) { SetDraggedPosition(eventData); ((AbstractEventData)eventData).Use(); } } public void OnEndDrag(PointerEventData eventData) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Invalid comparison between Unknown and I4 //IL_00cf: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)m_DraggingIcon)) { return; } Object.Destroy((Object)(object)m_DraggingIcon); Vector2 val = default(Vector2); if (RectTransformUtility.ScreenPointToLocalPointInRectangle(m_Queue.rectTransform, eventData.position, eventData.pressEventCamera, ref val)) { int newIndex = Mathf.RoundToInt(val.x / (m_Queue.iconScale * (m_Queue.itemIconPrefabWidth + 5f))); int num = m_Queue.icons.FindIndex((ItemIcon icon) => (Object)(object)((Component)icon).gameObject == (Object)(object)((Component)this).gameObject); List<QueueManager.QueueEntry> queue = m_Queue.queue; if (num < 0 || num > queue.Count) { return; } int num2 = m_Queue.queue[num].count; if ((int)eventData.button == 1 && num2 > 1) { num2 /= 2; } QueueManager.Move(m_Queue.tier, num, newIndex, num2); } ((AbstractEventData)eventData).Use(); } private void SetDraggedPosition(PointerEventData data) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) RectTransform component = m_DraggingIcon.GetComponent<RectTransform>(); Vector3 position = default(Vector3); if (RectTransformUtility.ScreenPointToWorldPointInRectangle(m_Queue.rectTransform, data.position, data.pressEventCamera, ref position)) { ((Transform)component).position = position; } } public void OnPointerClick(PointerEventData eventData) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if ((int)eventData.button != 1 || !ModConfig.rightClickRemovesStack.Value) { return; } List<ItemIcon> icons = m_Queue.icons; for (int i = 0; i < icons.Count; i++) { if ((Object)(object)((Component)icons[i]).gameObject == (Object)(object)((Component)this).gameObject) { QueueManager.QueueEntry queueEntry = m_Queue.queue[i]; QueueManager.Remove(m_Queue.tier, i, queueEntry.count); break; } } ((AbstractEventData)eventData).Use(); } } public GameObject itemIconPrefab; public float itemIconPrefabWidth = 64f; public ItemTier tier; private float iconScale = 1f; private RectTransform rectTransform; private readonly List<ItemIcon> icons = new List<ItemIcon>(); private List<QueueManager.QueueEntry> queue; public void Awake() { ref RectTransform reference = ref rectTransform; Transform transform = ((Component)this).transform; reference = (RectTransform)(object)((transform is RectTransform) ? transform : null); } public void Start() { //IL_0007: 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) Rect rect = rectTransform.rect; iconScale = (((Rect)(ref rect)).height - 10f) / itemIconPrefabWidth; LayoutIcons(); } public void LayoutIcon(int index, RectTransform transform) { //IL_001c: 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) transform.anchoredPosition = new Vector2((float)index * iconScale * (itemIconPrefabWidth + 5f), 5f); ((Transform)transform).localScale = new Vector3(iconScale, iconScale, 1f); } public void LayoutIcons(int first = 0) { for (int i = first; i < icons.Count; i++) { LayoutIcon(i, icons[i].rectTransform); } } public ItemIcon AllocateIcon(int index) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_005f: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) ItemIcon icon = Object.Instantiate<GameObject>(itemIconPrefab, (Transform)(object)rectTransform, false).GetComponent<ItemIcon>(); RectTransform val = icon.rectTransform; Button obj = ((Component)icon).gameObject.AddComponent<Button>(); ((UnityEvent)obj.onClick).AddListener((UnityAction)delegate { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < icons.Count; i++) { if ((Object)(object)icons[i] == (Object)(object)icon) { QueueManager.Remove(tier, i); break; } } }); Navigation navigation = default(Navigation); ((Navigation)(ref navigation)).mode = (Mode)0; ((Selectable)obj).navigation = navigation; val.anchorMin = new Vector2(0f, 1f); val.anchorMax = new Vector2(0f, 1f); LayoutIcon(index, val); ((Component)icon).gameObject.AddComponent<QueueItemBehavior>().Init(this); icons.Insert(index, icon); return icon; } public void AllocateIcons(int count, Action<int, ItemIcon> action = null) { for (int num = icons.Count - 1; num >= count; num--) { Object.Destroy((Object)(object)((Component)icons[num]).gameObject); icons.RemoveAt(num); } for (int i = icons.Count; i < count; i++) { ItemIcon arg = AllocateIcon(i); action?.Invoke(i, arg); } } public void DestroyUI() { foreach (ItemIcon icon in icons) { Object.Destroy((Object)(object)((Component)icon).gameObject); } icons.Clear(); } public void UpdateUI() { AllocateIcons(queue.Count); UpdateIcons(); } private void UpdateIcon(int i) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) ItemIcon obj = icons[i]; QueueManager.QueueEntry queueEntry = queue[i]; obj.SetItemIndex(PickupCatalog.GetPickupDef(queueEntry.pickupIndex).itemIndex, queueEntry.count); } private void UpdateIcons() { for (int i = 0; i < icons.Count; i++) { UpdateIcon(i); } } private void HandleQueueChange(QueueManager.QueueChange change, ItemTier tier, int index) { //IL_000e: 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) if (Object.op_Implicit((Object)(object)itemIconPrefab) && tier == this.tier) { switch (change) { case QueueManager.QueueChange.Changed: UpdateIcon(index); break; case QueueManager.QueueChange.Added: AllocateIcon(index); UpdateIcon(index); break; case QueueManager.QueueChange.Removed: Object.Destroy((Object)(object)((Component)icons[index]).gameObject); icons.RemoveAt(index); LayoutIcons(index); break; case QueueManager.QueueChange.Moved: UpdateUI(); break; } } } public void OnEnable() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)itemIconPrefab)) { queue = QueueManager.mainQueues[tier]; UpdateUI(); QueueManager.OnQueueChanged += HandleQueueChange; } } public void OnDisable() { QueueManager.OnQueueChanged -= HandleQueueChange; } } public static class QueueManager { public struct QueueEntry { public PickupIndex pickupIndex; public int count; } public enum QueueChange { Removed, Added, Changed, Moved } public static Dictionary<ItemTier, List<QueueEntry>> mainQueues = new Dictionary<ItemTier, List<QueueEntry>> { { (ItemTier)0, new List<QueueEntry>() }, { (ItemTier)1, new List<QueueEntry>() }, { (ItemTier)2, new List<QueueEntry>() } }; public static Dictionary<ItemTier, bool> queueRepeat = new Dictionary<ItemTier, bool>(); public static event Action<Run> OnRunQueueInit; public static event Action<QueueChange, ItemTier, int> OnQueueChanged; internal static void Enable() { Run.onRunStartGlobal += InitQueues; ModConfig.OnReady += UpdateQueueAvailability; UpdateQueueAvailability(); } internal static void Disable() { Run.onRunStartGlobal -= InitQueues; ModConfig.OnReady -= UpdateQueueAvailability; } public static void UpdateQueueAvailability() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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_0056: 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) //IL_0062: 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) if (!ModConfig.Ready) { return; } ModConfig.ItemTierSet value = ModConfig.enabledTabs.Value; ItemTier[] array = mainQueues.Keys.ToArray(); foreach (ItemTier val in array) { if (!value.Contains(val)) { mainQueues.Remove(val); } } foreach (ItemTier item in value) { if (!mainQueues.ContainsKey(item)) { mainQueues.Add(item, new List<QueueEntry>()); } } } private static void InitQueues(Run run) { mainQueues.Clear(); UpdateQueueAvailability(); QueueManager.OnRunQueueInit?.Invoke(run); } public static bool DoesRepeat(ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) bool value; return queueRepeat.TryGetValue(tier, out value) && value; } public static void ToggleRepeat(ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) queueRepeat[tier] = !DoesRepeat(tier); } public static void Enqueue(PickupIndex pickupIndex) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: 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) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_006e: Unknown result type (might be due to invalid IL or missing references) ItemTier tier = ItemCatalog.GetItemDef(PickupCatalog.GetPickupDef(pickupIndex).itemIndex).tier; List<QueueEntry> list = mainQueues[tier]; if (list.Count > 0) { QueueEntry value = list[list.Count - 1]; if (value.pickupIndex == pickupIndex) { value.count++; list[list.Count - 1] = value; QueueManager.OnQueueChanged?.Invoke(QueueChange.Changed, tier, list.Count - 1); return; } } QueueEntry queueEntry = default(QueueEntry); queueEntry.pickupIndex = pickupIndex; queueEntry.count = 1; QueueEntry item = queueEntry; list.Add(item); QueueManager.OnQueueChanged?.Invoke(QueueChange.Added, tier, list.Count - 1); } public static PickupIndex Peek(ItemTier tier) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) List<QueueEntry> list = mainQueues[tier]; if (list.Count == 0) { return PickupIndex.none; } return list[0].pickupIndex; } public static PickupIndex Pop(ItemTier tier) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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) PickupIndex val = Remove(tier, 0); if (DoesRepeat(tier)) { Enqueue(val); } return val; } public static PickupIndex Remove(ItemTier tier, int index, int count = 1) { //IL_0005: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) List<QueueEntry> list = mainQueues[tier]; QueueEntry value = list[index]; value.count -= count; if (value.count <= 0) { list.RemoveAt(index); QueueManager.OnQueueChanged?.Invoke(QueueChange.Removed, tier, index); if (TryMerge(tier, index - 1, index)) { QueueManager.OnQueueChanged?.Invoke(QueueChange.Removed, tier, index); QueueManager.OnQueueChanged?.Invoke(QueueChange.Changed, tier, index - 1); } } else { list[index] = value; QueueManager.OnQueueChanged?.Invoke(QueueChange.Changed, tier, index); } return value.pickupIndex; } private static bool TryMerge(ItemTier tier, int into, int from) { //IL_0005: 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_003f: Unknown result type (might be due to invalid IL or missing references) List<QueueEntry> list = mainQueues[tier]; if (into < 0 || into >= list.Count || from < 0 || from >= list.Count) { return false; } QueueEntry value = list[into]; QueueEntry queueEntry = list[from]; if (value.pickupIndex != queueEntry.pickupIndex) { return false; } value.count += queueEntry.count; list[into] = value; list.RemoveAt(from); return true; } public static void ClearAllQueues() { mainQueues.Clear(); UpdateQueueAvailability(); } public static void Move(ItemTier tier, int oldIndex, int newIndex, int count = 1) { //IL_0005: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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) List<QueueEntry> list = mainQueues[tier]; newIndex = Math.Max(0, Math.Min(list.Count, newIndex)); if (newIndex == oldIndex) { return; } QueueEntry item = list[oldIndex]; if (item.count < count) { return; } if (item.count == count) { list.RemoveAt(oldIndex); if (newIndex > oldIndex) { newIndex--; } } else { QueueEntry value = list[oldIndex]; value.count -= count; list[oldIndex] = value; } item.count = count; if (TryMerge(tier, oldIndex - 1, oldIndex) && newIndex > oldIndex) { newIndex--; } list.Insert(newIndex, item); TryMerge(tier, newIndex - 1, newIndex); TryMerge(tier, newIndex, newIndex + 1); QueueManager.OnQueueChanged?.Invoke(QueueChange.Moved, tier, -1); } public static IEnumerable<(ItemTier, PickupIndex)> PeekAll() { return from entry in mainQueues where entry.Value.Count > 0 select (entry.Key, entry.Value.First().pickupIndex); } } internal class UIManager : MonoBehaviour { private struct ButtonWrapper { public HGButton hgButton { get; private set; } public TextMeshProUGUI textComponent { get; private set; } public RectTransform rectTransform { get; private set; } public LanguageTextMeshController languageTextMeshController { get; private set; } public ButtonClickedEvent _onClick => ((Button)hgButton).onClick; public string text { get { return languageTextMeshController.token; } set { languageTextMeshController.token = value; } } public string directText { get { TextMeshProUGUI obj = textComponent; if (obj == null) { return null; } return ((TMP_Text)obj).text; } set { ((TMP_Text)textComponent).text = value; } } public event UnityAction onClick { add { ((UnityEvent)_onClick).AddListener(value); } remove { ((UnityEvent)_onClick).RemoveListener(value); } } public ButtonWrapper(HGButton button) { hgButton = button; textComponent = ((Component)button).GetComponentInChildren<TextMeshProUGUI>(); rectTransform = ((Component)button).GetComponent<RectTransform>(); languageTextMeshController = ((Component)button).GetComponent<LanguageTextMeshController>(); } } [CompilerGenerated] private sealed class <ExecuteNextFrameInner>d__11 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public Action action; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <ExecuteNextFrameInner>d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = 0; <>1__state = 1; return true; case 1: <>1__state = -1; action(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static GameObject commandUIPrefab; private static GameObject commandCancelButton; private static PickupPickerPanel prefabPickupPickerPanel; private static GameObject commandItemButton; private static GameObject commandItemContainer; private static Texture2D repeatIconTexture; private static bool staticInitialized = false; private static readonly Color selectedColorMult = new Color(0.3f, 0.3f, 0.3f); private Sprite missingUnlockIcon; private GameObject itemIconPrefab; private ItemInventoryDisplay itemInventoryDisplayPrefab; private ScoreboardController scoreboard; private HUD hud; private GameObject container; private GameObject origContainer; private GameObject saveLoadContainer; private ColorBlock origButtonColors; private ColorBlock selectedButtonColors; private ButtonWrapper scoreboardButton; private ButtonWrapper queueButton; private ButtonWrapper saveLoadButton; private GameObject queueContainer; private readonly Dictionary<ItemTier, GameObject> queueDisplays = new Dictionary<ItemTier, GameObject>(); private readonly Dictionary<ItemTier, ButtonWrapper> queueButtons = new Dictionary<ItemTier, ButtonWrapper>(); private int displayingQueues = 1; private ItemTier selectedQueue; private int savePageIndex; private const int savesPerPage = 4; private List<GameObject> saveListElements = new List<GameObject>(); private GameObject saveListContainer; private ButtonWrapper prevPageButton; private ButtonWrapper nextPageButton; private ButtonWrapper pageIndicator; private TMP_InputField saveNameInput; private string renamingSaveId; private List<GameObject> uiElements = new List<GameObject>(); private int DisplayingQueues { get { return displayingQueues; } set { if (displayingQueues == value) { return; } if (Object.op_Implicit((Object)(object)origContainer) && Object.op_Implicit((Object)(object)queueContainer) && Object.op_Implicit((Object)(object)saveLoadContainer)) { switch (value) { case 0: container.SetActive(false); queueContainer.SetActive(true); saveLoadContainer.SetActive(false); break; case 1: container.SetActive(true); queueContainer.SetActive(false); saveLoadContainer.SetActive(false); break; default: container.SetActive(false); queueContainer.SetActive(false); saveLoadContainer.SetActive(true); break; } } displayingQueues = value; UpdateButtonColors(); } } private ItemTier SelectedQueue { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return selectedQueue; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: 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) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (selectedQueue != value) { queueDisplays[selectedQueue].SetActive(false); queueDisplays[value].SetActive(true); ButtonWrapper[] buttons = new ButtonWrapper[2] { queueButtons[value], queueButtons[selectedQueue] }; TransitionEnabledButton(buttons); selectedQueue = value; } } } private static void InitializeStatic() { if (!staticInitialized && !((Object)(object)CommandArtifactManager.commandCubePrefab == (Object)null)) { commandUIPrefab = CommandArtifactManager.commandCubePrefab.GetComponent<PickupPickerController>().panelPrefab; commandCancelButton = ((Component)commandUIPrefab.GetComponentsInChildren<HGButton>().First((HGButton a) => ((Object)a).name == "CancelButton")).gameObject; prefabPickupPickerPanel = commandUIPrefab.GetComponent<PickupPickerPanel>(); commandItemButton = prefabPickupPickerPanel.buttonPrefab; commandItemContainer = ((Component)prefabPickupPickerPanel.buttonContainer).gameObject; staticInitialized = true; } } private static void CopyRectTransform(RectTransform dest, RectTransform source) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) dest.anchorMin = source.anchorMin; dest.anchorMax = source.anchorMax; dest.anchoredPosition = source.anchoredPosition; ((Transform)dest).position = ((Transform)source).position; dest.sizeDelta = source.sizeDelta; } private static void ReparentChildren(Transform dest, Transform source, bool keepWorldPos = false, Action<Transform> additionalAction = null) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown List<Transform> list = new List<Transform>(); foreach (Transform item in source) { Transform val = item; if ((Object)(object)val != (Object)(object)dest) { list.Add(val); } } foreach (Transform item2 in list) { item2.SetParent(dest, keepWorldPos); additionalAction?.Invoke(item2); } } [IteratorStateMachine(typeof(<ExecuteNextFrameInner>d__11))] private static IEnumerator ExecuteNextFrameInner(Action action) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <ExecuteNextFrameInner>d__11(0) { action = action }; } private void ExecuteNextFrame(Action action) { ((MonoBehaviour)this).StartCoroutine(ExecuteNextFrameInner(action)); } private ButtonWrapper CreateButton(GameObject parent = null, UnityAction onClick = null, string text = null) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown GameObject val = Object.Instantiate<GameObject>(commandCancelButton, (parent != null) ? parent.transform : null); uiElements.Add(val); HGButton component = val.GetComponent<HGButton>(); ((MPButton)component).onSelect = new UnityEvent(); ((MPButton)component).onDeselect = new UnityEvent(); ((Button)component).onClick = new ButtonClickedEvent(); ButtonWrapper result = new ButtonWrapper(component); if (text != null) { result.text = text; } if (onClick != null) { result.onClick += onClick; } return result; } private void MarkButton(ButtonWrapper button, bool state) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) ((Selectable)button.hgButton).colors = (state ? selectedButtonColors : origButtonColors); ((Graphic)button.hgButton.imageOnHover).color = (state ? selectedColorMult : Color.white); } private void TransitionEnabledButton(ButtonWrapper[] buttons) { int num = 0; foreach (ButtonWrapper button in buttons) { if (num == 0) { MarkButton(button, state: true); } else { MarkButton(button, state: false); } num++; } } private void UpdateButtonColors() { ButtonWrapper[] array = new ButtonWrapper[3]; if (Object.op_Implicit((Object)(object)queueButton.hgButton) && Object.op_Implicit((Object)(object)scoreboardButton.hgButton) && Object.op_Implicit((Object)(object)saveLoadButton.hgButton)) { if (DisplayingQueues == 0) { array[0] = queueButton; array[1] = scoreboardButton; array[2] = saveLoadButton; } else if (DisplayingQueues == 1) { array[0] = scoreboardButton; array[1] = queueButton; array[2] = saveLoadButton; } else { array[0] = saveLoadButton; array[1] = queueButton; array[2] = scoreboardButton; } TransitionEnabledButton(array); } } private void PrintObject(GameObject obj, bool components = false, int depth = 0) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(' ', depth * 2); stringBuilder.Append(((object)obj).ToString()); Debug.Log((object)stringBuilder.ToString()); if (components) { Component[] components2 = obj.GetComponents<Component>(); foreach (Component val in components2) { stringBuilder.Clear(); stringBuilder.Append(' ', depth * 2); stringBuilder.Append('-'); stringBuilder.Append(((object)val).ToString()); Debug.Log((object)stringBuilder.ToString()); } } foreach (Transform item in obj.transform) { Transform val2 = item; PrintObject(((Component)val2).gameObject, components, depth + 1); } } private PickupIndex GetPickupIndexOfItemTier(ItemTier itemTier) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: 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) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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) PickupIndex val = PickupCatalog.FindPickupIndex(itemTier); if (val != PickupIndex.none) { return val; } Enumerator<ItemDef> enumerator = ItemCatalog.allItemDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { ItemDef current = enumerator.Current; if (current.tier == itemTier) { return PickupCatalog.FindPickupIndex(current.itemIndex); } } } finally { ((IDisposable)enumerator).Dispose(); } return PickupIndex.none; } private PickupIndex[] GetAllPickupsOfTier(ItemTier itemTier) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) List<PickupIndex> list = new List<PickupIndex>(); Enumerator<ItemDef> enumerator = ItemCatalog.allItemDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { ItemDef current = enumerator.Current; if (current.tier == itemTier) { PickupIndex val = PickupCatalog.FindPickupIndex(current.itemIndex); if (val != PickupIndex.none) { list.Add(val); } } } } finally { ((IDisposable)enumerator).Dispose(); } return list.ToArray(); } private RectTransform CreateQueueContainer(ItemTier itemTier, RectTransform parent, Action<PickupIndex> callback) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_0049: Expected O, but got Unknown //IL_009c: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: 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_040b: Unknown result type (might be due to invalid IL or missing references) //IL_041d: Unknown result type (might be due to invalid IL or missing references) //IL_0423: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_042c: Unknown result type (might be due to invalid IL or missing references) //IL_0431: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject($"{itemTier}QueueContainer", new Type[1] { typeof(RectTransform) }); Transform transform = val.transform; RectTransform val2 = (RectTransform)(object)((transform is RectTransform) ? transform : null); ((Transform)val2).SetParent((Transform)(object)parent, false); GameObject val3 = Object.Instantiate<GameObject>(((Component)itemInventoryDisplayPrefab).gameObject, (Transform)(object)val2, false); Object.DestroyImmediate((Object)(object)val3.GetComponent<ItemInventoryDisplay>()); Object.DestroyImmediate((Object)(object)val3.GetComponent<LayoutElement>()); Transform transform2 = val3.transform; Transform obj = ((transform2 is RectTransform) ? transform2 : null); ((RectTransform)obj).anchorMin = new Vector2(0f, 1f); ((RectTransform)obj).anchorMax = new Vector2(1f, 1f); ((RectTransform)obj).sizeDelta = new Vector2(-60f, 50f); ((RectTransform)obj).anchoredPosition = new Vector2(0f, -5f); ((RectTransform)obj).pivot = new Vector2(0f, 1f); ButtonWrapper repeatButton = default(ButtonWrapper); repeatButton = CreateButton(val, (UnityAction)delegate { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) QueueManager.ToggleRepeat(itemTier); MarkButton(repeatButton, QueueManager.DoesRepeat(itemTier)); }, ""); RectTransform rectTransform = repeatButton.rectTransform; rectTransform.anchorMin = new Vector2(1f, 1f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.sizeDelta = new Vector2(55f, 55f); rectTransform.anchoredPosition = new Vector2(0f, -2.5f); rectTransform.pivot = new Vector2(1f, 1f); GameObject val4 = new GameObject($"{itemTier}RepeatButtonImageHolder", new Type[1] { typeof(RectTransform) }); Transform transform3 = val4.transform; Transform obj2 = ((transform3 is RectTransform) ? transform3 : null); obj2.SetParent((Transform)(object)rectTransform, false); ((RectTransform)obj2).anchorMin = new Vector2(0f, 0f); ((RectTransform)obj2).anchorMax = new Vector2(1f, 1f); ((RectTransform)obj2).sizeDelta = new Vector2(-15f, -15f); val4.AddComponent<RawImage>().texture = (Texture)(object)repeatIconTexture; MarkButton(repeatButton, QueueManager.DoesRepeat(itemTier)); QueueDisplay queueDisplay = val3.AddComponent<QueueDisplay>(); queueDisplay.itemIconPrefab = itemIconPrefab; queueDisplay.itemIconPrefabWidth = itemInventoryDisplayPrefab.itemIconPrefabWidth; queueDisplay.tier = itemTier; GameObject val5 = Object.Instantiate<GameObject>(commandItemContainer, (Transform)(object)val2, false); RectTransform itemButtonsTransform = default(RectTransform); ref RectTransform reference = ref itemButtonsTransform; Transform transform4 = val5.transform; reference = (RectTransform)(object)((transform4 is RectTransform) ? transform4 : null); GridLayoutGroup component = val5.GetComponent<GridLayoutGroup>(); UIElementAllocator<MPButton> val6 = new UIElementAllocator<MPButton>(itemButtonsTransform, commandItemButton, true, false); if (ModConfig.bigItemButtonContainer.Value) { Object.Destroy((Object)(object)val5.GetComponent<RawImage>()); component.constraint = (Constraint)0; component.startCorner = (Corner)0; component.startAxis = (Axis)0; ((LayoutGroup)component).childAlignment = (TextAnchor)1; component.cellSize *= ModConfig.bigItemButtonScale.Value; itemButtonsTransform.anchoredPosition = new Vector2(0f, 0f); itemButtonsTransform.anchorMin = new Vector2(0f, 0f); itemButtonsTransform.anchorMax = new Vector2(1f, 1f); itemButtonsTransform.sizeDelta = new Vector2(0f, -55f); itemButtonsTransform.pivot = new Vector2(0.5f, 0f); } else { component.constraint = (Constraint)1; component.constraintCount = prefabPickupPickerPanel.maxColumnCount; ((LayoutGroup)component).childAlignment = (TextAnchor)1; itemButtonsTransform.anchorMin = new Vector2(0.5f, 1f); itemButtonsTransform.anchorMax = new Vector2(0.5f, 1f); itemButtonsTransform.anchoredPosition = new Vector2(0f, -55f); itemButtonsTransform.pivot = new Vector2(0f, 1f); itemButtonsTransform.sizeDelta = default(Vector2); } PickupIndex pickupIndexOfItemTier = GetPickupIndexOfItemTier(itemTier); PickupIndex[] itemOptions = (PickupIndex[])(((object)PickupTransmutationManager.GetGroupFromPickupIndex(pickupIndexOfItemTier)) ?? ((object)new PickupIndex[0])); if (itemOptions.Length == 0) { itemOptions = GetAllPickupsOfTier(itemTier); } PickupIndex[] availableItemOptions = ((itemOptions.Length != 0) ? (PickupTransmutationManager.GetAvailableGroupFromPickupIndex(itemOptions[0]) ?? itemOptions) : itemOptions); if (itemOptions != null) { val6.onCreateElement = delegate(int index, MPButton button) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown PickupIndex pickupIndex = itemOptions[index]; bool num = availableItemOptions != null && availableItemOptions.Contains(pickupIndex); PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); Image component2 = ((Component)((Component)button).GetComponent<ChildLocator>().FindChild("Icon")).GetComponent<Image>(); if (num && pickupDef != null) { ((Graphic)component2).color = Color.white; component2.sprite = pickupDef.iconSprite; ((Selectable)button).interactable = true; ((UnityEvent)((Button)button).onClick).AddListener((UnityAction)delegate { //IL_000c: Unknown result type (might be due to invalid IL or missing references) callback(pickupIndex); LayoutRebuilder.MarkLayoutForRebuild(itemButtonsTransform); }); } else { ((Graphic)component2).color = Color.gray; component2.sprite = missingUnlockIcon; ((Selectable)button).interactable = false; } }; val6.AllocateElements(itemOptions.Length); } return val2; } private TMP_InputField CreateInputField(GameObject parent, string placeholder = "Enter name...") { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("SaveNameInput", new Type[2] { typeof(RectTransform), typeof(Image) }); RectTransform component = val.GetComponent<RectTransform>(); ((Transform)component).SetParent(parent.transform, false); ((Graphic)val.GetComponent<Image>()).color = new Color(0.1f, 0.1f, 0.1f, 0.9f); RectTransform component2 = new GameObject("TextArea", new Type[2] { typeof(RectTransform), typeof(RectMask2D) }).GetComponent<RectTransform>(); ((Transform)component2).SetParent((Transform)(object)component, false); component2.anchorMin = Vector2.zero; component2.anchorMax = Vector2.one; component2.offsetMin = new Vector2(10f, 5f); component2.offsetMax = new Vector2(-10f, -5f); GameObject val2 = new GameObject("Placeholder", new Type[2] { typeof(RectTransform), typeof(TextMeshProUGUI) }); RectTransform component3 = val2.GetComponent<RectTransform>(); ((Transform)component3).SetParent((Transform)(object)component2, false); component3.anchorMin = Vector2.zero; component3.anchorMax = Vector2.one; component3.offsetMin = Vector2.zero; component3.offsetMax = Vector2.zero; TextMeshProUGUI component4 = val2.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component4).text = placeholder; ((TMP_Text)component4).fontSize = 18f; ((Graphic)component4).color = new Color(0.5f, 0.5f, 0.5f, 0.8f); ((TMP_Text)component4).alignment = (TextAlignmentOptions)513; GameObject val3 = new GameObject("Text", new Type[2] { typeof(RectTransform), typeof(TextMeshProUGUI) }); RectTransform component5 = val3.GetComponent<RectTransform>(); ((Transform)component5).SetParent((Transform)(object)component2, false); component5.anchorMin = Vector2.zero; component5.anchorMax = Vector2.one; component5.offsetMin = Vector2.zero; component5.offsetMax = Vector2.zero; TextMeshProUGUI component6 = val3.GetComponent<TextMeshProUGUI>(); ((TMP_Text)component6).fontSize = 18f; ((Graphic)component6).color = Color.white; ((TMP_Text)component6).alignment = (TextAlignmentOptions)513; TMP_InputField obj = val.AddComponent<TMP_InputField>(); obj.textViewport = component2; obj.textComponent = (TMP_Text)(object)component6; obj.placeholder = (Graphic)(object)component4; obj.fontAsset = ((TMP_Text)component6).font; obj.pointSize = 18f; obj.characterLimit = 30; return obj; } private void CreateSaveLoadContainer(GameObject saveLoadCon) { //IL_002d: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_00bc: 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_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Expected O, but got Unknown //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Expected O, but got Unknown //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0291: 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_029f: Unknown result type (might be due to invalid IL or missing references) ModConfig.MigrateOldSaves(); saveNameInput = CreateInputField(saveLoadCon, "Enter save name..."); RectTransform component = ((Component)saveNameInput).GetComponent<RectTransform>(); component.anchorMin = new Vector2(0.05f, 0.88f); component.anchorMax = new Vector2(0.65f, 0.98f); component.offsetMin = Vector2.zero; component.offsetMax = Vector2.zero; RectTransform rectTransform = CreateButton(saveLoadCon, (UnityAction)delegate { ModConfig.CreateSave(string.IsNullOrWhiteSpace(saveNameInput.text) ? $"Save {ModConfig.GetAllSaves().Count + 1}" : saveNameInput.text); saveNameInput.text = ""; RefreshSaveList(); }, "Save").rectTransform; rectTransform.anchorMin = new Vector2(0.67f, 0.88f); rectTransform.anchorMax = new Vector2(0.95f, 0.98f); rectTransform.anchoredPosition = default(Vector2); rectTransform.sizeDelta = default(Vector2); saveListContainer = new GameObject("SaveListContainer", new Type[1] { typeof(RectTransform) }); Transform transform = saveListContainer.transform; Transform obj = ((transform is RectTransform) ? transform : null); obj.SetParent(saveLoadCon.transform, false); ((RectTransform)obj).anchorMin = new Vector2(0.05f, 0.15f); ((RectTransform)obj).anchorMax = new Vector2(0.95f, 0.82f); ((RectTransform)obj).anchoredPosition = default(Vector2); ((RectTransform)obj).sizeDelta = default(Vector2); prevPageButton = CreateButton(saveLoadCon, (UnityAction)delegate { if (savePageIndex > 0) { savePageIndex--; RefreshSaveList(); } }, "<"); RectTransform rectTransform2 = prevPageButton.rectTransform; rectTransform2.anchorMin = new Vector2(0.1f, 0.02f); rectTransform2.anchorMax = new Vector2(0.25f, 0.12f); rectTransform2.anchoredPosition = default(Vector2); rectTransform2.sizeDelta = default(Vector2); pageIndicator = CreateButton(saveLoadCon, null, "Page 1"); ((Selectable)pageIndicator.hgButton).interactable = false; RectTransform rectTransform3 = pageIndicator.rectTransform; rectTransform3.anchorMin = new Vector2(0.3f, 0.02f); rectTransform3.anchorMax = new Vector2(0.7f, 0.12f); rectTransform3.anchoredPosition = default(Vector2); rectTransform3.sizeDelta = default(Vector2); nextPageButton = CreateButton(saveLoadCon, (UnityAction)delegate { int num = Mathf.CeilToInt((float)ModConfig.GetAllSaves().Count / 4f); if (savePageIndex < num - 1) { savePageIndex++; RefreshSaveList(); } }, ">"); RectTransform rectTransform4 = nextPageButton.rectTransform; rectTransform4.anchorMin = new Vector2(0.75f, 0.02f); rectTransform4.anchorMax = new Vector2(0.9f, 0.12f); rectTransform4.anchoredPosition = default(Vector2); rectTransform4.sizeDelta = default(Vector2); RefreshSaveList(); } private void RefreshSaveList() { //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Expected O, but got Unknown //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0183: 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_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Expected O, but got Unknown //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03be: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Expected O, but got Unknown //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Expected O, but got Unknown //IL_030d: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) foreach (GameObject saveListElement in saveListElements) { if ((Object)(object)saveListElement != (Object)null) { Object.Destroy((Object)(object)saveListElement); } } saveListElements.Clear(); List<ModConfig.SaveData> allSaves = ModConfig.GetAllSaves(); int num = Mathf.Max(1, Mathf.CeilToInt((float)allSaves.Count / 4f)); savePageIndex = Mathf.Clamp(savePageIndex, 0, num - 1); if ((Object)(object)pageIndicator.hgButton != (Object)null) { pageIndicator.directText = $"Page {savePageIndex + 1}/{num}"; } List<ModConfig.SaveData> list = allSaves.Skip(savePageIndex * 4).Take(4).ToList(); for (int i = 0; i < list.Count; i++) { ModConfig.SaveData saveData = list[i]; float num2 = 1f - (float)(i + 1) * 0.25f; float num3 = 0.225f; GameObject val = new GameObject($"SaveRow_{i}", new Type[1] { typeof(RectTransform) }); Transform transform = val.transform; Transform obj = ((transform is RectTransform) ? transform : null); obj.SetParent(saveListContainer.transform, false); ((RectTransform)obj).anchorMin = new Vector2(0f, num2); ((RectTransform)obj).anchorMax = new Vector2(1f, num2 + num3); ((RectTransform)obj).anchoredPosition = default(Vector2); ((RectTransform)obj).sizeDelta = default(Vector2); saveListElements.Add(val); int saveItemCount = ModConfig.GetSaveItemCount(saveData); string saveId = saveData.id; string currentName = saveData.name; RectTransform rectTransform = CreateButton(text: $"{saveData.name} ({saveItemCount} items)", parent: val, onClick: (UnityAction)delegate { ModConfig.LoadSave(saveId); }).rectTransform; rectTransform.anchorMin = new Vector2(0f, 0.1f); rectTransform.anchorMax = new Vector2(0.55f, 0.9f); rectTransform.anchoredPosition = default(Vector2); rectTransform.sizeDelta = default(Vector2); RectTransform rectTransform2 = CreateButton(text: (renamingSaveId == saveId) ? "Apply" : "Edit", parent: val, onClick: (UnityAction)delegate { if (renamingSaveId == saveId) { if (!string.IsNullOrWhiteSpace(saveNameInput.text)) { ModConfig.RenameSave(saveId, saveNameInput.text); saveNameInput.text = ""; } renamingSaveId = null; } else { saveNameInput.text = currentName; ((Selectable)saveNameInput).Select(); saveNameInput.ActivateInputField(); renamingSaveId = saveId; } RefreshSaveList(); }).rectTransform; rectTransform2.anchorMin = new Vector2(0.57f, 0.1f); rectTransform2.anchorMax = new Vector2(0.78f, 0.9f); rectTransform2.anchoredPosition = default(Vector2); rectTransform2.sizeDelta = default(Vector2); RectTransform rectTransform3 = CreateButton(val, (UnityAction)delegate { ModConfig.DeleteSave(saveId); RefreshSaveList(); }, "X").rectTransform; rectTransform3.anchorMin = new Vector2(0.8f, 0.1f); rectTransform3.anchorMax = new Vector2(0.98f, 0.9f); rectTransform3.anchoredPosition = default(Vector2); rectTransform3.sizeDelta = default(Vector2); } if (allSaves.Count == 0) { ButtonWrapper buttonWrapper = CreateButton(saveListContainer, null, "No saves yet. Create one!"); ((Selectable)buttonWrapper.hgButton).interactable = false; RectTransform rectTransform4 = buttonWrapper.rectTransform; rectTransform4.anchorMin = new Vector2(0.1f, 0.4f); rectTransform4.anchorMax = new Vector2(0.9f, 0.6f); rectTransform4.anchoredPosition = default(Vector2); rectTransform4.sizeDelta = default(Vector2); saveListElements.Add(((Component)buttonWrapper.hgButton).gameObject); } } private void DestroyUI() { foreach (GameObject uiElement in uiElements) { Object.Destroy((Object)(object)uiElement); } uiElements.Clear(); if ((Object)(object)container != (Object)null) { RectTransform component = container.GetComponent<RectTransform>(); ReparentChildren((Transform)(object)origContainer.GetComponent<RectTransform>(), (Transform)(object)component); Object.Destroy((Object)(object)container); Object.Destroy((Object)(object)queueContainer); Object.Destroy((Object)(object)saveLoadContainer); container = null; } } private void RebuildUI() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0127: 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_0151: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Expected O, but got Unknown //IL_027d: 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_028b: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: 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_0425: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Unknown result type (might be due to invalid IL or missing references) //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_04e1: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_0505: Expected O, but got Unknown //IL_052a: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Unknown result type (might be due to invalid IL or missing references) //IL_054c: Unknown result type (might be due to invalid IL or missing references) //IL_056b: Unknown result type (might be due to invalid IL or missing references) //IL_0582: Unknown result type (might be due to invalid IL or missing references) //IL_0588: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Expected O, but got Unknown //IL_05cb: Unknown result type (might be due to invalid IL or missing references) //IL_05d1: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_060c: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Unknown result type (might be due to invalid IL or missing references) //IL_0629: Unknown result type (might be due to invalid IL or missing references) //IL_063d: Unknown result type (might be due to invalid IL or missing references) //IL_0647: Expected O, but got Unknown //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Expected O, but got Unknown //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_03ae: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) DestroyUI(); origButtonColors = ((Selectable)commandCancelButton.GetComponent<HGButton>()).colors; ColorBlock val = origButtonColors; ((ColorBlock)(ref val)).disabledColor = ((ColorBlock)(ref val)).disabledColor * selectedColorMult; ((ColorBlock)(ref val)).pressedColor = ((ColorBlock)(ref val)).pressedColor * selectedColorMult; Color val2 = default(Color); ((Color)(ref val2))..ctor(0.7f, 0.55f, 0.1f, 1f); ((ColorBlock)(ref val)).normalColor = val2; ((ColorBlock)(ref val)).highlightedColor = val2; selectedButtonColors = val; container = new GameObject("CommandQueueScoreboardWrapper", new Type[1] { typeof(RectTransform) }); RectTransform component = container.GetComponent<RectTransform>(); saveLoadContainer = new GameObject("SaveLoadContainer", new Type[1] { typeof(RectTransform) }); RectTransform component2 = saveLoadContainer.GetComponent<RectTransform>(); origContainer = ((Component)scoreboard).gameObject; RectTransform component3 = origContainer.GetComponent<RectTransform>(); ((Transform)component).SetParent((Transform)(object)component3, false); component.anchorMin = new Vector2(0f, 0f); component.anchorMax = new Vector2(1f, 0.83f); component.offsetMin = new Vector2(0f, 0f); component.offsetMax = new Vector2(0f, 0f); ReparentChildren((Transform)(object)component, (Transform)(object)component3); queueContainer = new GameObject("CommandQueueContainer", new Type[1] { typeof(RectTransform) }); Transform transform = queueContainer.transform; RectTransform val3 = (RectTransform)(object)((transform is RectTransform) ? transform : null); ((Transform)component2).SetParent((Transform)(object)component3, false); saveLoadContainer.SetActive(false); CopyRectTransform(component2, component); CreateSaveLoadContainer(saveLoadContainer); ((Transform)val3).SetParent((Transform)(object)component3, false); CopyRectTransform(val3, component); Dictionary<ItemTier, string> dictionary = new Dictionary<ItemTier, string> { { (ItemTier)0, "White" }, { (ItemTier)1, "Green" }, { (ItemTier)2, "Red" }, { (ItemTier)4, "Boss" }, { (ItemTier)3, "Lunar" }, { (ItemTier)6, "Void W" }, { (ItemTier)7, "Void G" }, { (ItemTier)8, "Void R" }, { (ItemTier)9, "Void B" } }; ModConfig.ItemTierSet value = ModConfig.enabledTabs.Value; _ = value.Count; int num = 0; foreach (ItemTier tier in value) { string text = (dictionary.ContainsKey(tier) ? dictionary[tier] : ModConfig.GetTierName(tier)); string text2 = text; ButtonWrapper value2 = CreateButton(queueContainer, (UnityAction)delegate { //IL_0007: Unknown result type (might be due to invalid IL or missing references) SelectedQueue = tier; }, text2); value2.rectTransform.anchorMin = new Vector2((float)num / (float)value.Count, 86f / 93f); value2.rectTransform.anchorMax = new Vector2((float)(num + 1) / (float)value.Count, 1f); value2.rectTransform.anchoredPosition = default(Vector2); value2.rectTransform.sizeDelta = default(Vector2); RectTransform val4 = CreateQueueContainer(tier, val3, delegate(PickupIndex index) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) QueueManager.Enqueue(index); }); val4.anchorMin = new Vector2(0f, 0f); val4.anchorMax = new Vector2(1f, 86f / 93f); val4.sizeDelta = default(Vector2); val4.anchoredPosition = default(Vector2); ((Component)val4).gameObject.SetActive(false); queueDisplays[tier] = ((Component)val4).gameObject; queueButtons[tier] = value2; num++; } selectedQueue = value.First(); queueDisplays[selectedQueue].SetActive(true); ExecuteNextFrame(delegate { //IL_0008: Unknown result type (might be due to invalid IL or missing references) MarkButton(queueButtons[selectedQueue], state: true); }); queueContainer.SetActive(false); scoreboardButton = CreateButton(origContainer, null, "Scoreboard"); scoreboardButton.rectTransform.anchoredPosition = default(Vector2); scoreboardButton.rectTransform.anchorMin = new Vector2(0f, 0.93f); scoreboardButton.rectTransform.anchorMax = new Vector2(0.333f, 1f); scoreboardButton.rectTransform.sizeDelta = default(Vector2); scoreboardButton.onClick += (UnityAction)delegate { DisplayingQueues = 1; }; queueButton = CreateButton(origContainer, null, "Command Queue"); queueButton.rectTransform.anchoredPosition = default(Vector2); queueButton.rectTransform.anchorMin = new Vector2(0.333f, 0.93f); queueButton.rectTransform.anchorMax = new Vector2(0.667f, 1f); queueButton.rectTransform.sizeDelta = default(Vector2); queueButton.onClick += (UnityAction)delegate { DisplayingQueues = 0; }; saveLoadButton = CreateButton(origContainer, null, "Saves"); saveLoadButton.rectTransform.anchoredPosition = default(Vector2); saveLoadButton.rectTransform.anchorMin = new Vector2(0.666f, 0.93f); saveLoadButton.rectTransform.anchorMax = new Vector2(1f, 1f); saveLoadButton.rectTransform.sizeDelta = default(Vector2); saveLoadButton.onClick += (UnityAction)delegate { DisplayingQueues = 2; }; ExecuteNextFrame(delegate { UpdateButtonColors(); }); } public void Awake() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown if (!CommandQueue.IsLoaded) { Object.Destroy((Object)(object)this); return; } InitializeStatic(); if (!staticInitialized) { Object.Destroy((Object)(object)this); return; } repeatIconTexture = new Texture2D(0, 0); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CommandQueue.repeat-solid.png")) { using MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); byte[] array = memoryStream.ToArray(); ImageConversion.LoadImage(repeatIconTexture, array); } scoreboard = ((Component)this).GetComponent<ScoreboardController>(); hud = ((Component)this).GetComponentInParent<HUD>(); missingUnlockIcon = Resources.Load<Sprite>("Textures/MiscIcons/texUnlockIcon"); itemInventoryDisplayPrefab = scoreboard.stripPrefab.GetComponent<ScoreboardStrip>().itemInventoryDisplay; ItemInventoryDisplay itemInventoryDisplay = LegacyResourcesAPI.Load<GameObject>("Prefabs/HUDSimple").GetComponent<HUD>().itemInventoryDisplay; itemIconPrefab = itemInventoryDisplay.itemIconPrefab; CommandQueue.PluginUnloaded += delegate { Object.DestroyImmediate((Object)(object)this); }; } private void OnDestroy() { DestroyUI(); Object.Destroy((Object)(object)repeatIconTexture); } private void OnEnable() { if ((Object)(object)container == (Object)null) { RebuildUI(); } } }