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 CommandQueueWithSaveSOTSFix v1.7.0
CommandQueue.dll
Decompiled a month 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.Bootstrap; using BepInEx.Configuration; using HG; using Mono.Cecil; using On.RoR2; using On.RoR2.Artifacts; using On.RoR2.UI; using RiskOfOptions; using RiskOfOptions.Components.Options; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; 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.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CommandQueue")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+16f44ecfba5f19f350f8d705434446143e3c3094")] [assembly: AssemblyProduct("CommandQueue")] [assembly: AssemblyTitle("CommandQueue")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] namespace CommandQueue; [BepInPlugin("com.kuberoot.commandqueue", "CommandQueue", "1.7.0")] public class CommandQueue : BaseUnityPlugin { [CompilerGenerated] private sealed class <<CommandArtifactManager_Init>g__coroutine|13_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|13_0>d(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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 <>c__DisplayClass14_0 { public PickupPickerController self; } [CompilerGenerated] private sealed class <>c__DisplayClass14_1 { public int j; public <>c__DisplayClass14_0 CS$<>8__locals1; } public static bool IsLoaded; private static GameObject commandUIPrefab; public RiskOfOptionsIntegration ROOIntegration; public static event Action PluginUnloaded; public void Awake() { ModConfig.OnReady += delegate { ModConfig.enabledTabs.SettingChanged += delegate { PartialReload(); }; ModConfig.bigItemButtonContainer.SettingChanged += delegate { PartialReload(); }; ModConfig.bigItemButtonScale.SettingChanged += delegate { PartialReload(); }; }; ModConfig.InitConfig(((BaseUnityPlugin)this).Config); } private void PartialReload() { QueueManager.UpdateQueueAvailability(); HUD[] array = Object.FindObjectsOfType<HUD>(); foreach (HUD val in array) { val.scoreboardPanel.GetComponent<UIManager>()?.RebuildUI(); } } public void OnEnable() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: 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>(); foreach (HUD val in array) { val.scoreboardPanel.AddComponent<UIManager>(); } TryEnableROOIntegration(); } public void OnDisable() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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(); TryDisableROOIntegration(); } public void Start() { TryEnableROOIntegration(); } private void TryEnableROOIntegration() { if (ROOIntegration == null && Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { ROOIntegration = new RiskOfOptionsIntegration(); ROOIntegration.Enable(); } } private void TryDisableROOIntegration() { ROOIntegration?.Disable(); ROOIntegration = null; } private void CommandArtifactManager_Init(orig_Init orig) { orig.Invoke(); ((MonoBehaviour)this).StartCoroutine(coroutine()); [IteratorStateMachine(typeof(<<CommandArtifactManager_Init>g__coroutine|13_0>d))] static IEnumerator coroutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <<CommandArtifactManager_Init>g__coroutine|13_0>d(0); } } private void HandleCommandDisplayBegin(orig_OnDisplayBegin orig, PickupPickerController self, NetworkUIPromptController networkUIPromptController, LocalUser localUser, CameraRigController cameraRigController) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_004e: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //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) <>c__DisplayClass14_0 <>c__DisplayClass14_ = new <>c__DisplayClass14_0(); <>c__DisplayClass14_.self = self; if ((Object)(object)<>c__DisplayClass14_.self.panelPrefab == (Object)(object)commandUIPrefab) { foreach (var (tier, val) in QueueManager.PeekAll()) { if (!<>c__DisplayClass14_.self.IsChoiceAvailable(val)) { continue; } QueueManager.Pop(tier); Option[] options = <>c__DisplayClass14_.self.options; <>c__DisplayClass14_1 CS$<>8__locals0 = new <>c__DisplayClass14_1(); CS$<>8__locals0.CS$<>8__locals1 = <>c__DisplayClass14_; 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__DisplayClass14_1.<<HandleCommandDisplayBegin>g__submitChoiceNextFrame|0>d))] IEnumerator submitChoiceNextFrame() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <>c__DisplayClass14_1.<<HandleCommandDisplayBegin>g__submitChoiceNextFrame|0>d(0) { <>4__this = CS$<>8__locals0 }; } } } orig.Invoke(<>c__DisplayClass14_.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_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_0020: 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_0037: 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) 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) ? value : ((object)(ItemTier)(ref x)).ToString())); } public static ItemTierSet Deserialize(string src) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) 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 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 fileName = "commandQueueSlot_"; private const string extension = "save"; public static event Action OnReady; internal static void InitConfig(ConfigFile _config) { //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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_0024: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_0098: Expected O, but got Unknown //IL_00ac: 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_00c7: Expected O, but got Unknown //IL_00c7: Expected O, but got Unknown //IL_00db: 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_00fa: Expected O, but got Unknown //IL_00fa: Expected O, but got Unknown //IL_010e: 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_0129: Expected O, but got Unknown //IL_0129: 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 }, 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_0006: 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 void SaveQueue(int slot) { string path = string.Format("{0}{1}.{2}", "commandQueueSlot_", slot, "save"); string value = 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},"); if (!File.Exists(path)) { File.Create(path).Dispose(); } using StreamWriter streamWriter = new StreamWriter(path); streamWriter.WriteLine(value); streamWriter.Dispose(); } public static void LoadQueue(int slot) { //IL_008f: Unknown result type (might be due to invalid IL or missing references) string path = string.Format("{0}{1}.{2}", "commandQueueSlot_", slot, "save"); if (!File.Exists(path)) { return; } QueueManager.ClearAllQueues(); string text = File.ReadAllText(path).Trim(); if (string.IsNullOrEmpty(text)) { return; } try { string[] array = text.Split(','); foreach (string text2 in array) { if (!string.IsNullOrEmpty(text2)) { string[] array2 = text2.Split('*'); for (int j = 0; j < int.Parse(array2[1]); j++) { QueueManager.Enqueue(PickupCatalog.FindPickupIndex(array2[0])); } } } } catch (Exception) { Debug.Log((object)$"File for save slot {slot} contains errors."); } } public static string PreviewSlot(int slot) { string path = string.Format("{0}{1}.{2}", "commandQueueSlot_", slot, "save"); if (!File.Exists(path)) { return "No Save"; } string text = File.ReadAllText(path).Trim(); if (string.IsNullOrEmpty(text)) { return "Empty"; } int num = 0; try { num += (from o in text.Split(',') where !string.IsNullOrEmpty(o) select o.Split('*') into o select int.Parse(o[1])).Sum(); } catch (Exception) { return "Error"; } return (num > 0) ? string.Format("{0} item{1}", num, (num > 1) ? "s" : "") : "Empty"; } } 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_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) //IL_0009: 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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0091: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) InputButton button = eventData.button; InputButton val = button; if ((int)val <= 1) { m_DraggingIcon = new GameObject("QueueItemDragIcon"); m_DraggingIcon.transform.SetParent(((Component)m_Queue).transform, false); m_DraggingIcon.transform.SetAsLastSibling(); RawImage val2 = m_DraggingIcon.AddComponent<RawImage>(); val2.texture = m_ItemIcon.image.texture; RectTransform rectTransform = ((Graphic)val2).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)val2).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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Invalid comparison between Unknown and I4 //IL_00fd: 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)) { float num = val.x / (m_Queue.iconScale * (m_Queue.itemIconPrefabWidth + 5f)); int newIndex = Mathf.RoundToInt(num); int num2 = m_Queue.icons.FindIndex((ItemIcon icon) => (Object)(object)((Component)icon).gameObject == (Object)(object)((Component)this).gameObject); List<QueueManager.QueueEntry> queue = m_Queue.queue; if (num2 < 0 || num2 > queue.Count) { return; } int num3 = m_Queue.queue[num2].count; if ((int)eventData.button == 1 && num3 > 1) { num3 /= 2; } QueueManager.Move(m_Queue.tier, num2, newIndex, num3); } ((AbstractEventData)eventData).Use(); } private void SetDraggedPosition(PointerEventData data) { //IL_0019: 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) 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_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_0062: 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) 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_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_001d: 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) 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_0063: 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_0085: 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) ItemIcon icon = Object.Instantiate<GameObject>(itemIconPrefab, (Transform)(object)rectTransform, false).GetComponent<ItemIcon>(); RectTransform val = icon.rectTransform; Button val2 = ((Component)icon).gameObject.AddComponent<Button>(); ((UnityEvent)val2.onClick).AddListener((UnityAction)delegate { //IL_002d: 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) 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)val2).navigation = navigation; val.anchorMin = new Vector2(0f, 1f); val.anchorMax = new Vector2(0f, 1f); LayoutIcon(index, val); QueueItemBehavior queueItemBehavior = ((Component)icon).gameObject.AddComponent<QueueItemBehavior>(); 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_001d: 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) ItemIcon val = icons[i]; QueueManager.QueueEntry queueEntry = queue[i]; val.SetItemIndex(PickupCatalog.GetPickupDef(queueEntry.pickupIndex).itemIndex, queueEntry.count, 0f); } private void UpdateIcons() { for (int i = 0; i < icons.Count; i++) { UpdateIcon(i); } } private void HandleQueueChange(QueueManager.QueueChange change, ItemTier tier, int index) { //IL_0015: 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) 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_001c: 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_0035: 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_004e: 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) //IL_0073: 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_0090: 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_0006: 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_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) queueRepeat[tier] = !DoesRepeat(tier); } public static void Enqueue(PickupIndex pickupIndex) { //IL_0001: 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_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_009a: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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) 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_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_001a: 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_0031: 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_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: 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_000a: 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_001c: 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_001f: 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_0006: 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_0046: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007d: 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_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_0006: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: 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); } } public class RiskOfOptionsIntegration { public class ItemTierCheckboxOption : CheckBoxOption { public ConfigEntry<ModConfig.ItemTierSet> SourceConfigEntry; public ItemTier BoundItemTier; public string CategoryName; public string BoundItemTierName; public override ConfigEntryBase ConfigEntry => (ConfigEntryBase)(object)SourceConfigEntry; public override bool Value { get { //IL_000c: Unknown result type (might be due to invalid IL or missing references) return SourceConfigEntry.Value.Contains(BoundItemTier); } set { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) if (value) { SourceConfigEntry.Value.Add(BoundItemTier); } else { SourceConfigEntry.Value.Remove(BoundItemTier); } ((ConfigEntryBase)SourceConfigEntry).OnSettingChanged((object)SourceConfigEntry); } } public ItemTierCheckboxOption(ConfigEntry<ModConfig.ItemTierSet> sourceConfigEntry, ItemTier itemTier, string categoryName) : base(new CheckBoxConfig(), sourceConfigEntry.Value.Contains(itemTier)) { //IL_0001: 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_0017: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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) SourceConfigEntry = sourceConfigEntry; BoundItemTier = itemTier; CategoryName = categoryName; BoundItemTierName = ModConfig.GetTierName(itemTier); } public override GameObject CreateOptionGameObject(GameObject prefab, Transform parent) { GameObject val = Object.Instantiate<GameObject>(prefab, parent); ModSettingsBool componentInChildren = val.GetComponentInChildren<ModSettingsBool>(); ((ModSetting)componentInChildren).nameToken = ((BaseOption)this).GetNameToken(); ((ModSetting)componentInChildren).settingToken = ((BaseOption)this).Identifier; ((Object)val).name = "Mod Option ItemTierCheckBox, " + ((BaseOption)this).Name + " " + BoundItemTierName; return val; } public override void SetProperties() { ((BaseOption)this).SetCategoryName(CategoryName, (BaseOptionConfig)(object)base.config); ((BaseOption)this).SetName(BoundItemTierName, (BaseOptionConfig)(object)base.config); ((BaseOption)this).SetDescription("Show tier in queue tabs", (BaseOptionConfig)(object)base.config); } } private static Texture2D modIcon; private static Sprite modIconSprite; public void Enable() { if (ModConfig.Ready) { InitInternal(); } else { ModConfig.OnReady += InitInternal; } } internal void InitInternal() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Expected O, but got Unknown //IL_0123: 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_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) modIcon = new Texture2D(0, 0); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CommandQueue.icon.png")) { using MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); byte[] array = memoryStream.ToArray(); ImageConversion.LoadImage(modIcon, array); } modIconSprite = Sprite.Create(modIcon, new Rect(0f, 0f, (float)((Texture)modIcon).width, (float)((Texture)modIcon).height), new Vector2((float)((Texture)modIcon).width / 2f, (float)((Texture)modIcon).height / 2f)); ModSettingsManager.SetModIcon(modIconSprite); ModSettingsManager.SetModDescription("Queue up items to automatically pick from command drops"); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ModConfig.rightClickRemovesStack)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ModConfig.bigItemButtonContainer)); ModSettingsManager.AddOption((BaseOption)new SliderOption(ModConfig.bigItemButtonScale, new SliderConfig { min = 0.1f, max = 10f, FormatString = "{0:F2}" })); Enumerator<ItemTierDef> enumerator = ItemTierCatalog.allItemTierDefs.GetEnumerator(); try { while (enumerator.MoveNext()) { ItemTierDef current = enumerator.Current; ModSettingsManager.AddOption((BaseOption)(object)new ItemTierCheckboxOption(ModConfig.enabledTabs, current.tier, "Enabled Tabs")); } } finally { ((IDisposable)enumerator).Dispose(); } ModConfig.OnReady -= InitInternal; } public void Disable() { ModConfig.OnReady -= InitInternal; } } 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; return (obj != null) ? ((TMP_Text)obj).text : null; } 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__10 : 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__10(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 readonly GameObject commandUIPrefab; private static readonly GameObject commandCancelButton; private static readonly PickupPickerPanel prefabPickupPickerPanel; private static readonly GameObject commandItemButton; private static readonly GameObject commandItemContainer; private static Texture2D repeatIconTexture; private static readonly Color selectedColorMult; 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 = (ItemTier)0; 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; UpdateDisplayingQueues(); UpdateButtonColors(); } } private ItemTier SelectedQueue { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return selectedQueue; } set { //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) //IL_0019: 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_004b: 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_0078: 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) if (selectedQueue != value) { queueDisplays[selectedQueue].SetActive(false); queueDisplays[value].SetActive(true); ButtonWrapper[] buttons = new ButtonWrapper[2] { queueButtons[value], queueButtons[selectedQueue] }; TransitionEnabledButton(buttons); selectedQueue = value; } } } static UIManager() { //IL_000f: 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) selectedColorMult = new Color(0.3f, 0.3f, 0.3f); 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; } private static void CopyRectTransform(RectTransform dest, RectTransform source) { //IL_0003: 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_001d: 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_0037: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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__10))] private static IEnumerator ExecuteNextFrameInner(Action action) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <ExecuteNextFrameInner>d__10(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_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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 UpdateDisplayingQueues() { if (Object.op_Implicit((Object)(object)origContainer) && Object.op_Implicit((Object)(object)queueContainer)) { if (displayingQueues == 0) { container.SetActive(false); queueContainer.SetActive(true); } else { container.SetActive(true); queueContainer.SetActive(false); } } } private void MarkButton(ButtonWrapper button, bool state) { //IL_0014: 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_0035: 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) ((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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: 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_0001: Unknown result type (might be due to invalid IL or missing references) //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) //IL_000a: Unknown result type (might be due to invalid IL or missing references) return PickupCatalog.FindPickupIndex(itemTier); } 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_0022: 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_004a: Expected O, but got Unknown //IL_00a3: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Expected O, but got Unknown //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Expected O, but got Unknown //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_025f: 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_029e: Unknown result type (might be due to invalid IL or missing references) //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Unknown result type (might be due to invalid IL or missing references) //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_0468: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_0388: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: 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_0479: Unknown result type (might be due to invalid IL or missing references) //IL_047e: 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) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_04dc: 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; RectTransform val4 = (RectTransform)(object)((transform2 is RectTransform) ? transform2 : null); val4.anchorMin = new Vector2(0f, 1f); val4.anchorMax = new Vector2(1f, 1f); val4.sizeDelta = new Vector2(-60f, 50f); val4.anchoredPosition = new Vector2(0f, -5f); val4.pivot = new Vector2(0f, 1f); ButtonWrapper repeatButton = default(ButtonWrapper); repeatButton = CreateButton(val, (UnityAction)delegate { //IL_0002: 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) 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 val5 = new GameObject($"{itemTier}RepeatButtonImageHolder", new Type[1] { typeof(RectTransform) }); Transform transform3 = val5.transform; RectTransform val6 = (RectTransform)(object)((transform3 is RectTransform) ? transform3 : null); ((Transform)val6).SetParent((Transform)(object)rectTransform, false); val6.anchorMin = new Vector2(0f, 0f); val6.anchorMax = new Vector2(1f, 1f); val6.sizeDelta = new Vector2(-15f, -15f); RawImage val7 = val5.AddComponent<RawImage>(); val7.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 val8 = Object.Instantiate<GameObject>(commandItemContainer, (Transform)(object)val2, false); RectTransform itemButtonsTransform = default(RectTransform); ref RectTransform reference = ref itemButtonsTransform; Transform transform4 = val8.transform; reference = (RectTransform)(object)((transform4 is RectTransform) ? transform4 : null); GridLayoutGroup component = val8.GetComponent<GridLayoutGroup>(); UIElementAllocator<MPButton> val9 = new UIElementAllocator<MPButton>(itemButtonsTransform, commandItemButton, true, false); if (ModConfig.bigItemButtonContainer.Value) { Object.Destroy((Object)(object)val8.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 (Mixin.IsNullOrEmpty<PickupIndex>(itemOptions)) { itemOptions = (PickupIndex[])(((object)PickupTransmutationManager.pickupGroups.FirstOrDefault(delegate(PickupIndex[] group) { //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_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) PickupIndex val10 = group.FirstOrDefault(); PickupDef pickupDef2 = ((PickupIndex)(ref val10)).pickupDef; return pickupDef2 != null && pickupDef2.itemTier == itemTier; })) ?? ((object)new PickupIndex[0])); } PickupIndex[] availableItemOptions = (PickupIndex[])(((object)PickupTransmutationManager.GetAvailableGroupFromPickupIndex(itemOptions.FirstOrDefault())) ?? ((object)new PickupIndex[0])); if (itemOptions != null) { val9.onCreateElement = delegate(int index, MPButton button) { //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_002f: 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown PickupIndex pickupIndex = itemOptions[index]; bool flag = availableItemOptions != null && availableItemOptions.Contains(pickupIndex); PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex); Image component2 = ((Component)((Component)button).GetComponent<ChildLocator>().FindChild("Icon")).GetComponent<Image>(); if (flag && pickupDef != null) { ((Graphic)component2).color = Color.white; component2.sprite = pickupDef.iconSprite; ((Selectable)button).interactable = true; ((UnityEvent)((Button)button).onClick).AddListener((UnityAction)delegate { //IL_000d: 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; } }; val9.AllocateElements(itemOptions.Length); } return val2; } private void CreateSaveLoadContainer(GameObject saveLoadCon) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_008c: 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_00b4: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Expected O, but got Unknown //IL_0113: 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_013b: Unknown result type (might be due to invalid IL or missing references) //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_0153: Unknown result type (might be due to invalid IL or missing references) float num = 5f; for (int i = 1; (float)i <= num; i++) { int slot = i; float num2 = (num + 1f - (float)slot) * 1.2f / num - 0.6f; ButtonWrapper loadButton = CreateButton(text: $"Load slot {slot} ({ModConfig.PreviewSlot(slot)})", parent: saveLoadCon, onClick: (UnityAction)delegate { ModConfig.LoadQueue(slot); }); RectTransform rectTransform = loadButton.rectTransform; rectTransform.anchorMin = new Vector2(0.25f, num2); rectTransform.anchorMax = new Vector2(0.495f, num2 + 0.24f); rectTransform.anchoredPosition = default(Vector2); rectTransform.sizeDelta = default(Vector2); RectTransform rectTransform2 = CreateButton(text: $"Save in slot {slot}", parent: saveLoadCon, onClick: (UnityAction)delegate { ModConfig.SaveQueue(slot); loadButton.text = $"Load slot {slot} ({ModConfig.PreviewSlot(slot)})"; }).rectTransform; rectTransform2.anchorMin = new Vector2(0.505f, num2); rectTransform2.anchorMax = new Vector2(0.75f, num2 + 0.24f); rectTransform2.anchoredPosition = default(Vector2); rectTransform2.sizeDelta = default(Vector2); } } private void DestroyUI() { foreach (GameObject uiElement in uiElements) { Object.Destroy((Object)(object)uiElement); } uiElements.Clear(); queueDisplays.Clear(); queueButtons.Clear(); if ((Object)(object)container != (Object)null) { RectTransform component = container.GetComponent<RectTransform>(); RectTransform component2 = origContainer.GetComponent<RectTransform>(); ReparentChildren((Transform)(object)component2, (Transform)(object)component); Object.Destroy((Object)(object)container); Object.Destroy((Object)(object)queueContainer); Object.Destroy((Object)(object)saveLoadContainer); container = null; } } public void RebuildUI() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_0040: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_008c: 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_009d: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Expected O, but got Unknown //IL_0132: 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_015e: 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_0196: Expected O, but got Unknown //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Expected O, but got Unknown //IL_02c7: 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_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0328: 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_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0492: 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_04cf: 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_04ed: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_050c: Expected O, but got Unknown //IL_0532: Unknown result type (might be due to invalid IL or missing references) //IL_0538: Unknown result type (might be due to invalid IL or missing references) //IL_0555: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_058d: 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_05a8: Unknown result type (might be due to invalid IL or missing references) //IL_05b2: Expected O, but got Unknown //IL_05d8: Unknown result type (might be due to invalid IL or missing references) //IL_05de: Unknown result type (might be due to invalid IL or missing references) //IL_05fb: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_0639: Unknown result type (might be due to invalid IL or missing references) //IL_064e: Unknown result type (might be due to invalid IL or missing references) //IL_0658: Expected O, but got Unknown //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_0361: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_038d: Unknown result type (might be due to invalid IL or missing references) //IL_0399: 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) //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) DestroyUI(); if (!((Component)this).gameObject.activeSelf) { return; } 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.sizeDelta = new Vector2(0f, 0f); component.anchorMin = new Vector2(0f, 0f); component.anchorMax = new Vector2(1f, 0.93f); 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" } }; ModConfig.ItemTierSet value = ModConfig.enabledTabs.Value; float num = (float)value.Count + 1f; int num2 = 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_0008: Unknown result type (might be due to invalid IL or missing references) SelectedQueue = tier; }, text2); value2.rectTransform.anchorMin = new Vector2((float)num2 / (float)value.Count, 86f / 93f); value2.rectTransform.anchorMax = new Vector2((float)(num2 + 1) / (float)value.Count, 1f); value2.rectTransform.anchoredPosition = default(Vector2); value2.rectTransform.sizeDelta = default(Vector2); RectTransform val4 = CreateQueueContainer(tier, val3, delegate(PickupIndex index) { //IL_0001: 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; num2++; } if (!queueDisplays.ContainsKey(selectedQueue)) { selectedQueue = value.First(); } queueDisplays[selectedQueue].SetActive(true); ExecuteNextFrame(delegate { //IL_0009: 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 { UpdateDisplayingQueues(); UpdateButtonColors(); }); } public void Awake() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown if (!CommandQueue.IsLoaded) { 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; GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/HUDSimple"); HUD component = val.GetComponent<HUD>(); ItemInventoryDisplay itemInventoryDisplay = component.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(); } } }