Decompiled source of EnhancedQOL v1.4.1
BepInEx/plugins/EnhancedQOL.dll
Decompiled 15 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EnhancedQOL.Binder; using EnhancedQOL.Extensions; using EnhancedQOL.Helpers; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: AssemblyCompany("EnhancedQOL")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.4.1.0")] [assembly: AssemblyInformationalVersion("1.4.1+dd4412d7b2a9f1908bfd6e9b5c0a9adfb76b24e8")] [assembly: AssemblyProduct("EnhancedQOL")] [assembly: AssemblyTitle("EnhancedQOL")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.4.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } internal sealed class ConfigurationManagerAttributes { public delegate void CustomHotkeyDrawerFunc(ConfigEntryBase setting, ref bool isCurrentlyAcceptingInput); public bool? ShowRangeAsPercent; public Action<ConfigEntryBase> CustomDrawer; public CustomHotkeyDrawerFunc CustomHotkeyDrawer; public bool? Browsable; public string Category; public object DefaultValue; public bool? HideDefaultButton; public bool? HideSettingName; public string Description; public string DispName; public int? Order; public bool? ReadOnly; public bool? IsAdvanced; public Func<object, string> ObjToStr; public Func<string, object> StrToObj; } namespace EnhancedQOL { [HarmonyPatch(typeof(InteractableCard3d))] internal class InteractableCard3dPatches { [HarmonyPatch("OnFinishLerp")] [HarmonyPostfix] public static void OnFinishLerpPostfix(ref InteractableCard3d __instance) { Plugin.PutItBack.OnCardFinishLerp(ref __instance); } } [BepInPlugin("EnhancedQOL", "EnhancedQOL", "1.4.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private readonly Harmony m_Harmony = new Harmony("EnhancedQOL"); private bool m_HasFinishedLoading; private bool m_ApplicationQuiting; private GameObject m_ChildGameObject; internal static EnhancedBinderSort EnhancedBinderSort { get; private set; } internal static PutItBack PutItBack { get; private set; } internal static ScrollWheeler ScrollWheeler { get; private set; } internal static SceneRaycaster Raycaster { get; private set; } internal static ManualLogSource Logger { get; private set; } private Plugin() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; m_Harmony.PatchAll(); Logger.LogInfo((object)"Plugin EnhancedQOL v1.4.1 by GhostNarwhal is loaded!"); } private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown Settings.Instance.Load(this); if (m_ChildGameObject == null) { m_ChildGameObject = new GameObject("EnhancedQOL+Internal Mods"); } m_ChildGameObject.transform.parent = ((Component)this).gameObject.transform; m_HasFinishedLoading = false; m_ApplicationQuiting = false; EnhancedBinderSort = m_ChildGameObject.AddComponent<EnhancedBinderSort>(); PutItBack = m_ChildGameObject.AddComponent<PutItBack>(); ScrollWheeler = m_ChildGameObject.AddComponent<ScrollWheeler>(); Raycaster = m_ChildGameObject.AddComponent<SceneRaycaster>(); ((Behaviour)this).enabled = Settings.Instance.isEnhancedQOLEnabled.Value; Settings.Instance.isEnhancedQOLEnabled.SettingChanged += delegate { if (!Settings.Instance.isEnhancedQOLEnabled.Value) { Settings.Instance.isPutItBackEnabled.Value = false; Settings.Instance.isEnhancedBinderSortEnabled.Value = false; Settings.Instance.isScrollWheelerEnabled.Value = false; } ((Behaviour)this).enabled = Settings.Instance.isEnhancedQOLEnabled.Value; }; SceneManager.sceneLoaded += SceneLoaded; } private void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode) { if (((Scene)(ref scene)).name == "Start") { m_HasFinishedLoading = true; if (((Behaviour)this).enabled) { OnEnable(); } } else { ((Behaviour)Raycaster).enabled = false; } } private void OnEnable() { if (m_HasFinishedLoading) { ((Behaviour)Raycaster).enabled = true; ((Behaviour)EnhancedBinderSort).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; ((Behaviour)PutItBack).enabled = Settings.Instance.isPutItBackEnabled.Value; ((Behaviour)ScrollWheeler).enabled = Settings.Instance.isScrollWheelerEnabled.Value; } } private void OnDisable() { if (Raycaster != null) { ((Behaviour)Raycaster).enabled = false; } if (!m_ApplicationQuiting) { Settings.Instance.isEnhancedQOLEnabled.Value = false; Settings.Instance.isPutItBackEnabled.Value = false; Settings.Instance.isScrollWheelerEnabled.Value = false; } } private void OnDestroy() { if (m_ChildGameObject != null) { Object.Destroy((Object)(object)m_ChildGameObject); } m_Harmony.UnpatchSelf(); Logger.LogInfo((object)"Plugin EnhancedQOL is unloaded!"); } private void OnApplicationQuit() { m_ApplicationQuiting = true; } } public class PutItBack : MonoBehaviour { private bool m_IsReturningCard; private int m_CurrentBinderPageIndex; private List<BinderPageGrp> m_BinderPageGrpList = new List<BinderPageGrp>(); private List<HeldCardData> m_HeldCardDataList = new List<HeldCardData>(); private List<Type> m_ItemCompartmentTypeList = new List<Type>(); private ECollectionSortingType m_SortingType; private bool m_IsInitialized; private void Awake() { Settings.Instance.isPutItBackEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isPutItBackEnabled.Value; if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_IsInitialized = false; } } public void OnUpdate(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) if (((Behaviour)this).enabled && collectionBinderFlipAnimCtrl.IsBookOpen()) { m_CurrentBinderPageIndex = collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex(); m_BinderPageGrpList = collectionBinderFlipAnimCtrl.m_BinderPageGrpList; m_SortingType = collectionBinderFlipAnimCtrl.GetSortingType(); if (UnityInput.Current.mouseScrollDelta.y > 0f && CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count > 0) { collectionBinderFlipAnimCtrl.OnMouseButtonUp(); } if (UnityInput.Current.mouseScrollDelta.y < 0f) { collectionBinderFlipAnimCtrl.OnRightMouseButtonUp(); } } } public bool OnRightMouseButtonUp(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { if (((Behaviour)this).enabled && !m_IsReturningCard) { InteractableCard3d currentRaycastedInteractableCard3d = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; bool? flag = ((currentRaycastedInteractableCard3d != null) ? new bool?(currentRaycastedInteractableCard3d.m_Card3dUI.m_CardUI.GetCardData().IsOwned()) : null); if (!flag.HasValue || !flag.Value) { return false; } if (InteractionPlayerController.HasEnoughSlotToHoldCard()) { List<HeldCardData> heldCardDataList = m_HeldCardDataList; HeldCardData obj = new HeldCardData { BinderCardSlotIndex = collectionBinderFlipAnimCtrl.GetRaycastedCardIndex(), BinderPageIndex = collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex() }; InteractableCard3d currentRaycastedInteractableCard3d2 = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; obj.CardData = ((currentRaycastedInteractableCard3d2 != null) ? currentRaycastedInteractableCard3d2.m_Card3dUI.m_CardUI.GetCardData() : null); InteractableCard3d currentRaycastedInteractableCard3d3 = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; obj.Transform = ((currentRaycastedInteractableCard3d3 != null) ? ((Component)currentRaycastedInteractableCard3d3).transform : null); heldCardDataList.Add(obj); } } return true; } public bool OnLeftMouseButtonUp(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { if (((Behaviour)this).enabled && !m_IsReturningCard) { List<InteractableCard3d> heldCards = CSingleton<InteractionPlayerController>.Instance.GetHeldCards(); if (heldCards.Count > 0) { int num = m_HeldCardDataList.Last().BinderCardSlotIndex; int num2 = m_HeldCardDataList.Last().BinderPageIndex - collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex(); int index = 0; if (num2 <= -1) { if (num >= 6) { num -= 6; } index = 2; } else if (num2 >= 1) { if (num <= 5) { num += 6; } index = 1; } Transform transform = ((Component)collectionBinderFlipAnimCtrl.m_BinderPageGrpList[index].m_CardList[num]).transform; ((InteractableObject)heldCards.Last()).StopLerpToTransform(); ((InteractableObject)heldCards.Last()).LerpToTransform(transform, transform.parent); m_IsReturningCard = true; return false; } } return true; } public void OnCardFinishLerp(ref InteractableCard3d interactableCard3D) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) if (!((Behaviour)this).enabled || !m_IsReturningCard) { return; } List<InteractableCard3d> heldCards = CSingleton<InteractionPlayerController>.Instance.GetHeldCards(); if (heldCards.Count > 0) { CPlayerData.AddCard(m_HeldCardDataList.Last().CardData, 1); int num = m_HeldCardDataList.Last().BinderPageIndex - m_CurrentBinderPageIndex; if (num >= -1 && num <= 1) { int index = ((num == -1) ? 2 : num); int cardAmount = CPlayerData.GetCardAmount(m_HeldCardDataList.Last().CardData); m_BinderPageGrpList[index].SetSingleCard(m_HeldCardDataList.Last().BinderCardSlotIndex, m_HeldCardDataList.Last().CardData, cardAmount, m_SortingType); ((Component)m_BinderPageGrpList[index].m_CardList[m_HeldCardDataList.Last().BinderCardSlotIndex]).gameObject.SetActive(true); ((Component)m_HeldCardDataList.Last().Transform).gameObject.SetActive(true); } ((InteractableObject)heldCards.Last()).OnDestroyed(); heldCards.RemoveAt(heldCards.Count - 1); m_HeldCardDataList.RemoveAt(m_HeldCardDataList.Count - 1); CPlayerData.m_HoldCardDataList.RemoveAt(CPlayerData.m_HoldCardDataList.Count - 1); SetHoldCardEularRotation(heldCards.Count); m_IsReturningCard = false; } } private void SetHoldCardEularRotation(int heldCardCount) { //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) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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) Quaternion value = Quaternion.Euler(0f, 0f, 0f); if (heldCardCount == 0) { CSingleton<InteractionPlayerController>.Instance.SetHoldCardGroupTargetRotation(value); CSingleton<InteractionPlayerController>.Instance.EnterViewCardAlbumMode(); } else { value = Quaternion.Euler(0f, 0f, Mathf.Lerp(0f, 15f, (float)heldCardCount / 7f)); CSingleton<InteractionPlayerController>.Instance.SetHoldCardGroupTargetRotation(value); } } } public class ScrollWheeler : MonoBehaviour { private bool m_IsInitialized; private void Awake() { Settings.Instance.isScrollWheelerEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isScrollWheelerEnabled.Value; if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_IsInitialized = false; } } private void Update() { //IL_0005: 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) if (UnityInput.Current.mouseScrollDelta.y > 0f) { OnScrollWheel(placingItem: true); } if (UnityInput.Current.mouseScrollDelta.y < 0f) { OnScrollWheel(placingItem: false); } } private void OnScrollWheel(bool placingItem) { InteractablePackagingBox_Item packagingBox = CSingleton<InteractionPlayerController>.Instance.GetCurrentHeldBox(); int heldCardCount = CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count; int heldItemCount = CSingleton<InteractionPlayerController>.Instance.GetHeldItemList().Count; Component raycastedComponent = Plugin.Raycaster.RaycastedComponent; if (raycastedComponent == null) { goto IL_0214; } ShelfCompartment val = default(ShelfCompartment); ref ShelfCompartment reference = ref val; Component obj = raycastedComponent; reference = (ShelfCompartment)(object)((obj is ShelfCompartment) ? obj : null); Action action; if (val != null && packagingBox != null) { action = delegate { if (placingItem) { packagingBox.DispenseItem(true, val); } else { packagingBox.RemoveItemFromShelf(true, val); } }; } else { ShelfCompartment val2 = default(ShelfCompartment); ref ShelfCompartment reference2 = ref val2; Component obj2 = raycastedComponent; reference2 = (ShelfCompartment)(object)((obj2 is ShelfCompartment) ? obj2 : null); if (val2 != null && val2.m_CanPutBox && !placingItem) { action = delegate { ((InteractableObject)((Component)val2).gameObject.GetComponent<InteractableStorageCompartment>()).OnMouseButtonUp(); }; } else { InteractablePackagingBox_Item val3 = default(InteractablePackagingBox_Item); ref InteractablePackagingBox_Item reference3 = ref val3; Component obj3 = raycastedComponent; reference3 = (InteractablePackagingBox_Item)(object)((obj3 is InteractablePackagingBox_Item) ? obj3 : null); if (val3 != null && packagingBox != null) { action = delegate { //IL_0096: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) if (!((InteractablePackagingBox)val3).IsBoxOpened()) { ((InteractablePackagingBox)val3).OnPressOpenBox(); } else if (!((InteractablePackagingBox)packagingBox).IsBoxOpened()) { ((InteractablePackagingBox)packagingBox).OnPressOpenBox(); } else { InteractablePackagingBox_Item val7 = (placingItem ? val3 : packagingBox); InteractablePackagingBox_Item val8 = (placingItem ? packagingBox : val3); Item lastItem = val8.m_ItemCompartment.GetLastItem(); if (lastItem != null && (val7.m_ItemCompartment.GetItemType() == val8.m_ItemCompartment.GetItemType() || val7.m_ItemCompartment.GetItemCount() == 0)) { lastItem.LerpToTransform(val7.m_ItemCompartment.GetLastEmptySlotTransform(), val7.m_ItemCompartment.GetLastEmptySlotTransform().parent, false); val7.m_ItemCompartment.SetCompartmentItemType(val8.m_ItemCompartment.GetItemType()); val7.m_ItemCompartment.AddItem(lastItem, false); val8.m_ItemCompartment.RemoveItem(lastItem); val7.m_ItemCompartment.SetPriceTagItemImage(val8.GetItemType()); val7.m_ItemCompartment.SetPriceTagVisibility(false); val7.m_ItemCompartment.RefreshPriceTagItemPriceText(); } } }; } else if (raycastedComponent is InteractableTrashBin && packagingBox != null && placingItem) { action = delegate { //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (packagingBox.m_ItemCompartment.GetItemCount() > 0) { ((UIScreenBase)CSingleton<InteractionPlayerController>.Instance.m_ConfirmTrashScreen).OpenScreen(); } else { ((InteractableTrashBin)Plugin.Raycaster.RaycastedComponent).DiscardBox((InteractablePackagingBox)(object)packagingBox, true); } }; } else { InteractableWorkbench val4 = default(InteractableWorkbench); ref InteractableWorkbench reference4 = ref val4; Component obj4 = raycastedComponent; reference4 = (InteractableWorkbench)(object)((obj4 is InteractableWorkbench) ? obj4 : null); if (val4 != null && packagingBox != null) { action = delegate { if (placingItem) { val4.DispenseItemFromBox(packagingBox, true); } else { val4.RemoveItemFromShelf(true, packagingBox); } }; } else { InteractableCardCompartment val5 = default(InteractableCardCompartment); ref InteractableCardCompartment reference5 = ref val5; Component obj5 = raycastedComponent; reference5 = (InteractableCardCompartment)(object)((obj5 is InteractableCardCompartment) ? obj5 : null); if (val5 != null) { action = delegate { if (placingItem && heldCardCount > 0) { val5.OnMouseButtonUp(); } else if (!placingItem) { val5.OnRightMouseButtonUp(); } }; } else { CardShelf val6 = default(CardShelf); ref CardShelf reference6 = ref val6; Component obj6 = raycastedComponent; reference6 = (CardShelf)(object)((obj6 is CardShelf) ? obj6 : null); if (val6 == null) { goto IL_0214; } action = delegate { foreach (InteractableCardCompartment cardCompartment in val6.GetCardCompartmentList()) { if (placingItem && heldCardCount > 0 && cardCompartment.m_StoredCardList.Count == 0) { cardCompartment.OnMouseButtonUp(); break; } if (!placingItem && cardCompartment.m_StoredCardList.Count > 0) { cardCompartment.OnRightMouseButtonUp(); break; } } }; } } } } } goto IL_0226; IL_0226: action(); return; IL_0214: action = delegate { if (raycastedComponent != null && placingItem && heldItemCount > 0) { CSingleton<InteractionPlayerController>.Instance.PutItemOnShelf(); } else if (raycastedComponent != null && !placingItem && packagingBox == null) { CSingleton<InteractionPlayerController>.Instance.TakeItemFromShelf(); } }; goto IL_0226; } } public class Settings { public ConfigEntry<bool> isEnhancedQOLEnabled; public ConfigEntry<bool> isScrollWheelerEnabled; public ConfigEntry<bool> isPutItBackEnabled; public ConfigEntry<bool> isEnhancedBinderSortEnabled; public ConfigEntry<int> minDupeCount; public ConfigEntry<ECardCountDisplayType> cardCountDisplayType; public ConfigEntry<Vector3> commonCardCountPosition; public ConfigEntry<int> commonCardCountFontSize; public ConfigEntry<Vector3> rareCardCountPosition; public ConfigEntry<int> rareCardCountFontSize; public ConfigEntry<Vector3> epicCardCountPosition; public ConfigEntry<int> epicCardCountFontSize; public ConfigEntry<Vector3> legendaryCardCountPosition; public ConfigEntry<int> legendaryCardCountFontSize; public ConfigEntry<KeyboardShortcut> raritySortFilterToggle; public ConfigEntry<KeyboardShortcut> borderSortFilterToggle; public ConfigEntry<KeyboardShortcut> elementSortFilterToggle; public ConfigEntry<KeyboardShortcut> elementSortFilterClear; public ConfigEntry<KeyboardShortcut> borderSortFilterClear; public ConfigEntry<KeyboardShortcut> allFilterClear; public ConfigEntry<KeyboardShortcut> raritySortFilterClear; private static Settings m_instance; public static Settings Instance { get { if (m_instance == null) { m_instance = new Settings(); } return m_instance; } } public void Load(Plugin plugin) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_016c: 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_019c: Expected O, but got Unknown //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Expected O, but got Unknown //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Expected O, but got Unknown //IL_0265: 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_0295: Expected O, but got Unknown //IL_02b2: 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_02e2: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Expected O, but got Unknown //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_037b: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Expected O, but got Unknown //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Expected O, but got Unknown //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Expected O, but got Unknown //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_045f: Expected O, but got Unknown //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Expected O, but got Unknown //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Expected O, but got Unknown //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_053f: Unknown result type (might be due to invalid IL or missing references) //IL_0549: Expected O, but got Unknown //IL_0581: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Expected O, but got Unknown //IL_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05d5: Unknown result type (might be due to invalid IL or missing references) //IL_05df: Expected O, but got Unknown //IL_0617: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Expected O, but got Unknown isEnhancedQOLEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL", "Enabled", true, new ConfigDescription("Enables or disables the entire plugin", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 25 } })); isScrollWheelerEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Scroll Wheeler", "Enabled", true, new ConfigDescription("Enables or disables Scroll Wheeler", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); isPutItBackEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Put It Back", "Enable", true, new ConfigDescription("Enables or disables put it back", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); isEnhancedBinderSortEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Enhanced Album Sort", "Enable", true, new ConfigDescription("Enables or disables Enhanced Sorting", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); minDupeCount = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Minimum Duplication Count", 1, new ConfigDescription("The minimum number of dupes for cards to show in Duplication sort", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, int.MaxValue), new object[1] { new ConfigurationManagerAttributes { Order = 19 } })); raritySortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Rarity Sort Filter Toggle", new KeyboardShortcut((KeyCode)122, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through rarity filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 18 } })); raritySortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Rarity Sort Filter", new KeyboardShortcut((KeyCode)122, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current rarity filter", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 17 } })); borderSortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Border Sort Filter Toggle", new KeyboardShortcut((KeyCode)120, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through border filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 16 } })); borderSortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Border Sort Filter", new KeyboardShortcut((KeyCode)120, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current border filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 15 } })); elementSortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Element Sort Filter Toggle", new KeyboardShortcut((KeyCode)99, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through element filters", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 14 } })); elementSortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Element Sort Filter", new KeyboardShortcut((KeyCode)99, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current element filter", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 13 } })); allFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear all sort filters", new KeyboardShortcut((KeyCode)118, Array.Empty<KeyCode>()), new ConfigDescription("Key to clear all current filters", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 12 } })); cardCountDisplayType = ((BaseUnityPlugin)plugin).Config.Bind<ECardCountDisplayType>("EnhancedQOL - Enhanced Album Sort", "Card Count Display Type", ECardCountDisplayType.None, new ConfigDescription("How you want to view the card counts", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 11 } })); commonCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Common Card Count Display Position", new Vector3(0f, 445f, 0f), new ConfigDescription("Position for common card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 10 } })); commonCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Common Card Count Display Font Size", 34, new ConfigDescription("Common card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9 } })); rareCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Rare Card Count Display Position", new Vector3(0f, 400f, 0f), new ConfigDescription("Position for rare card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8 } })); rareCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Rare Card Count Display Font Size", 34, new ConfigDescription("Rare card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7 } })); epicCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Epic Card Count Display Position", new Vector3(0f, 350f, 0f), new ConfigDescription("Position for epic card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6 } })); epicCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Epic Card Count Display Font Size", 34, new ConfigDescription("Epic card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 5 } })); legendaryCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Legendary Card Count Display Position", new Vector3(0f, 300f, 0f), new ConfigDescription("Position for legendary card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4 } })); legendaryCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Legendary Card Count Display Font Size", 34, new ConfigDescription("Legendary card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 3 } })); } private Settings() { } } public static class MyPluginInfo { public const string PLUGIN_GUID = "EnhancedQOL"; public const string PLUGIN_NAME = "EnhancedQOL"; public const string PLUGIN_VERSION = "1.4.1"; } } namespace EnhancedQOL.Patches { [HarmonyPatch(typeof(CollectionBinderFlipAnimCtrl))] public class CollectionBinderFlipAnimCtrlPatches { [HarmonyPatch("Update")] [HarmonyPrefix] private static void OnUpdatePrefix(CollectionBinderFlipAnimCtrl __instance, bool ___m_IsBookOpen) { Plugin.EnhancedBinderSort.OnCollectionBinderFlipAnimCtrlUpdate(__instance, ___m_IsBookOpen); } [HarmonyPatch("Update")] [HarmonyPostfix] private static void OnUpdatePostfix(CollectionBinderFlipAnimCtrl __instance) { Plugin.PutItBack.OnUpdate(__instance); } [HarmonyPatch("OnMouseButtonUp")] [HarmonyPrefix] public static bool OnMouseButtonUpPrefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.PutItBack.OnLeftMouseButtonUp(__instance); } [HarmonyPatch("OnRightMouseButtonUp")] [HarmonyPrefix] public static bool OnRightMouseButtonUpPrefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.PutItBack.OnRightMouseButtonUp(__instance); } [HarmonyPatch("StartShowCardAlbum")] [HarmonyPostfix] public static void StartShowCardAlbumPostfix(CollectionBinderFlipAnimCtrl __instance) { //IL_0006: 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) Plugin.EnhancedBinderSort.OnBinderOpen(__instance.GetSortingType(), __instance.GetExpansionType()); Plugin.Raycaster.OnBinderOpen(); } [HarmonyPatch("HideCardAlbum")] [HarmonyPostfix] public static void HideCardAlbumPostfix() { Plugin.Raycaster.OnBinderClose(); } } [HarmonyPatch(typeof(CollectionBinderUI))] public class CollectionBinderUIPatches { [HarmonyPatch("Awake")] [HarmonyPostfix] private static void OnUpdate(CollectionBinderUI __instance) { Plugin.EnhancedBinderSort.OnCollectionBinderUIAwake(__instance); } } [HarmonyPatch] public class MissingCardsCompatibilityPatch { private static PluginInfo m_PluginInfo; private static bool Prepare() { return Chainloader.PluginInfos.TryGetValue("MissingCards", out m_PluginInfo); } private static MethodBase TargetMethod() { return (from m in AccessTools.GetDeclaredMethods((from m in ((object)m_PluginInfo.Instance).GetType().GetNestedTypes(BindingFlags.NonPublic) where m.Name == "PatchSortBinder" select m).FirstOrDefault()) where m.Name == "Prefix" select m).Cast<MethodBase>().FirstOrDefault(); } [HarmonyPrefix] private static bool Prefix(out CollectionBinderUI __state) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 __state = Object.FindFirstObjectByType<CollectionBinderUI>(); if ((int)__state.m_CollectionAlbum.GetSortingType() == 7) { return (int)__state.m_CollectionAlbum.GetExpansionType() == 2; } return true; } [HarmonyPostfix] private static void Postfix(CollectionBinderUI __state, bool __runOriginal) { if (!__runOriginal && __state.m_CollectionAlbum.GetCanUpdateSort()) { __state.m_CollectionAlbum.SetCanUpdateSort(false); Plugin.EnhancedBinderSort.OnSort(__state.m_CollectionAlbum); } } } [HarmonyPatch] public class SortingPatch { private static IEnumerable<MethodBase> TargetMethods() { return (from method in AccessTools.GetDeclaredMethods(typeof(CollectionBinderFlipAnimCtrl)) where method.ReturnType == typeof(void) && method.Name.StartsWith("SortBy") select method).Cast<MethodBase>(); } private static bool Prefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.EnhancedBinderSort.OnSort(__instance); } } } namespace EnhancedQOL.Helpers { public class CollectedCardsUtility { public class Builder { private CollectedCardsUtility m_CardSorter = new CollectedCardsUtility(); public Builder WithSortType(ECollectionSortingType sortType) { //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) m_CardSorter.m_SortingType = sortType; return this; } public Builder WithExpansionType(ECardExpansionType expansionType) { //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) m_CardSorter.m_ExpansionType = expansionType; return this; } public Builder WithRarityType(ECardRaritySortType rarityType) { m_CardSorter.m_RarityType = rarityType; return this; } public Builder WithBorderType(ECardBorderSortType borderType) { m_CardSorter.m_BorderType = borderType; return this; } public Builder WithElementType(ECardElementSortType elementType) { m_CardSorter.m_ElementType = elementType; return this; } public Builder WithMinDupeCount(int minDupeCount) { m_CardSorter.m_MinDupeCount = minDupeCount; return this; } public CollectedCardsUtility Build() { return m_CardSorter; } } private int m_MinDupeCount; private ECollectionSortingType m_SortingType; private ECardExpansionType m_ExpansionType; private ECardRaritySortType m_RarityType; private ECardBorderSortType m_BorderType; private ECardElementSortType m_ElementType; public bool Sort(List<int> finalSortedCards) { //IL_0036: 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_020b: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Invalid comparison between Unknown and I4 //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Invalid comparison between Unknown and I4 //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Invalid comparison between Unknown and I4 //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Invalid comparison between Unknown and I4 finalSortedCards.Clear(); List<int> tempSortedCards = new List<int>(finalSortedCards.Capacity); int currentCardIndex = 0; foreach (EMonsterType shownMonster in InventoryBase.GetShownMonsterList(m_ExpansionType)) { MonsterData monsterData = InventoryBase.GetMonsterData(shownMonster); for (int i = 0; i < CPlayerData.GetCardAmountPerMonsterType(m_ExpansionType, true); i++) { CardData cardData = CPlayerData.GetCardData(currentCardIndex, m_ExpansionType, (int)m_ExpansionType == 1); int cardCount = CPlayerData.GetCardAmount(cardData); int cardPrice = 0; if ((int)m_SortingType == 5) { if (cardCount == m_MinDupeCount) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 1f); } else if (cardCount > m_MinDupeCount) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100000f); } } else if ((int)m_SortingType == 6) { cardPrice = cardCount * Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100f); } else if (cardCount > 0) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100f); } if (CardMatchesFilters(monsterData, cardData)) { ECollectionSortingType sortingType = m_SortingType; Action action = (((int)sortingType == 0) ? ((Action)delegate { finalSortedCards.Add(currentCardIndex); }) : (((int)sortingType == 1) ? ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddSortedDecending(cardCount), currentCardIndex); }) : (((int)sortingType != 7) ? ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddSortedDecending(cardPrice), currentCardIndex); }) : ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddAcending(cardCount), currentCardIndex); })))); action(); } int num = currentCardIndex; currentCardIndex = num + 1; } } return false; } public Tuple<int, int> GetCardCount() { //IL_0007: 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_0074: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Invalid comparison between Unknown and I4 int num = 0; int num2 = 0; int num3 = 0; foreach (EMonsterType shownMonster in InventoryBase.GetShownMonsterList(m_ExpansionType)) { MonsterData monsterData = InventoryBase.GetMonsterData(shownMonster); for (int i = 0; i < CPlayerData.GetCardAmountPerMonsterType(m_ExpansionType, true); i++) { CardData cardData = CPlayerData.GetCardData(num3, m_ExpansionType, (int)m_ExpansionType == 1); bool flag = CPlayerData.GetCardAmount(cardData) > 0; if (CardMatchesFilters(monsterData, cardData)) { num++; if (flag) { num2++; } } num3++; } } return Tuple.Create(num2, num); } private bool CardMatchesFilters(MonsterData monsterData, CardData cardData) { //IL_0012: 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_0042: 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_004f: Invalid comparison between Unknown and I4 //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Invalid comparison between Unknown and I4 //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Invalid comparison between Unknown and I4 int num = ((m_ElementType != ECardElementSortType.None) ? ((int)m_ElementType) : ((int)monsterData.ElementIndex)); int num2 = ((m_RarityType != ECardRaritySortType.None) ? ((int)m_RarityType) : ((int)monsterData.Rarity)); int num3 = ((m_BorderType != ECardBorderSortType.None) ? ((int)m_BorderType) : ((int)cardData.GetCardBorderType())); if ((int)monsterData.ElementIndex == num && (int)monsterData.Rarity == num2) { return (int)cardData.GetCardBorderType() == num3; } return false; } private CollectedCardsUtility() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) m_SortingType = (ECollectionSortingType)0; m_ExpansionType = (ECardExpansionType)0; m_BorderType = ECardBorderSortType.None; m_ElementType = ECardElementSortType.None; m_RarityType = ECardRaritySortType.None; m_MinDupeCount = 1; } } public class HeldCardData { public int BinderPageIndex { get; set; } public int BinderCardSlotIndex { get; set; } public CardData CardData { get; set; } public Transform Transform { get; set; } } public class ReverseComparer<T> : Comparer<T> { public override int Compare(T x, T y) { return Comparer<T>.Default.Compare(y, x); } } public class SceneRaycaster : MonoBehaviour { private List<Type> m_ItemCompartmentTypeList = new List<Type>(); private bool m_IsInitialized; public Component RaycastedComponent { get; private set; } private void Awake() { m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_ItemCompartmentTypeList.Add(typeof(InteractableCard3d)); m_ItemCompartmentTypeList.Add(typeof(CardShelf)); m_ItemCompartmentTypeList.Add(typeof(InteractableCardCompartment)); m_ItemCompartmentTypeList.Add(typeof(InteractablePackagingBox_Item)); m_ItemCompartmentTypeList.Add(typeof(ShelfCompartment)); m_ItemCompartmentTypeList.Add(typeof(InteractableTrashBin)); m_ItemCompartmentTypeList.Add(typeof(InteractableWorkbench)); m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_ItemCompartmentTypeList.Clear(); RaycastedComponent = null; } } private void FixedUpdate() { //IL_001a: 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_005c: Unknown result type (might be due to invalid IL or missing references) Camera val = CSingleton<InteractionPlayerController>.Instance?.m_Cam; Ray val2 = default(Ray); ((Ray)(ref val2))..ctor(((Component)val).transform.position, ((Component)val).transform.forward); int mask = LayerMask.GetMask(new string[4] { "UI", "Physics", "ItemCompartment", "ShopModel" }); RaycastHit val3 = default(RaycastHit); RaycastedComponent = (Physics.Raycast(val2, ref val3, CSingleton<InteractionPlayerController>.Instance.m_RayDistance, mask) ? (from component in ((Component)((RaycastHit)(ref val3)).transform).gameObject.GetComponents<Component>() where m_ItemCompartmentTypeList.Contains(((object)component).GetType()) select component).FirstOrDefault() : null); } public void OnBinderOpen() { RaycastedComponent = null; ((Behaviour)this).enabled = false; } public void OnBinderClose() { ((Behaviour)this).enabled = true; } } } namespace EnhancedQOL.Extensions { public static class CardDataExt { public static bool IsOwned(this CardData cardData) { return CPlayerData.GetCardAmount(cardData) > 0; } public static CardData CopyFrom(this CardData target, CardData source) { //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_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_0032: 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) target.monsterType = source.monsterType; target.isFoil = source.isFoil; target.borderType = source.borderType; target.isDestiny = source.isDestiny; target.expansionType = source.expansionType; return target; } } public static class CollectionBinderFlipAnimCtrlExt { public static ECollectionSortingType GetSortingType(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) return (ECollectionSortingType)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortingType").GetValue(collectionBinderFlipAnimCtrl); } public static int GetCurrentBinderPageIndex(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (int)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_Index").GetValue(collectionBinderFlipAnimCtrl); } public static ECardExpansionType GetExpansionType(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) return (ECardExpansionType)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_ExpansionType").GetValue(collectionBinderFlipAnimCtrl); } public static bool GetCanUpdateSort(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (bool)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_CanUpdateSort").GetValue(collectionBinderFlipAnimCtrl); } public static List<int> GetSortedCardList(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (List<int>)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortedIndexList").GetValue(collectionBinderFlipAnimCtrl); } public static List<int> GetTempSortedList(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (List<int>)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortTempList").GetValue(collectionBinderFlipAnimCtrl); } public static bool IsBookOpen(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (bool)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_IsBookOpen").GetValue(collectionBinderFlipAnimCtrl); } public static int GetRaycastedCardIndex(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (int)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_CurrentRaycastedCardIndex").GetValue(collectionBinderFlipAnimCtrl); } } public static class EnumExt { public static T Next<T>(this T src) where T : struct { if (!typeof(T).IsEnum) { throw new ArgumentException("Argument " + typeof(T).FullName + " is not an Enum"); } T[] array = (T[])Enum.GetValues(src.GetType()); int num = Array.IndexOf(array, src) + 1; if (array.Length != num) { return array[num]; } return array[0]; } } public static class InteractionPlayerControllerExt { public static List<InteractableCard3d> GetHeldCards(this InteractionPlayerController playerController) { return (List<InteractableCard3d>)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentHoldingCard3dList").GetValue(playerController); } public static void SetHoldCardGroupTargetRotation(this InteractionPlayerController playerController, Quaternion value) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) AccessTools.Field(typeof(InteractionPlayerController), "m_HoldCardGrpTargetRotation").SetValue(playerController, value); } public static ShelfCompartment GetRaycastedItemCompartment(this InteractionPlayerController playerController) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown return (ShelfCompartment)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentItemCompartment").GetValue(playerController); } public static InteractablePackagingBox_Item GetCurrentHeldBox(this InteractionPlayerController playerController) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown return (InteractablePackagingBox_Item)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentHoldingItemBox").GetValue(playerController); } public static List<Item> GetHeldItemList(this InteractionPlayerController playerController) { return (List<Item>)AccessTools.Field(typeof(InteractionPlayerController), "m_HoldItemList").GetValue(playerController); } public static void PutItemOnShelf(this InteractionPlayerController playerController) { AccessTools.Method(typeof(InteractionPlayerController), "EvaluatePutItemOnShelf", (Type[])null, (Type[])null).Invoke(playerController, null); } public static void TakeItemFromShelf(this InteractionPlayerController playerController) { AccessTools.Method(typeof(InteractionPlayerController), "EvaluateTakeItemFromShelf", (Type[])null, (Type[])null).Invoke(playerController, null); } } public static class ListExt { public static int AddSortedDecending<T>(this List<T> list, T item) where T : IComparable<T> { ReverseComparer<T> reverseComparer = new ReverseComparer<T>(); if (list.Count == 0 || reverseComparer.Compare(list[list.Count - 1], item) <= 0) { list.Add(item); return list.Count - 1; } if (reverseComparer.Compare(list[0], item) >= 0) { list.Insert(0, item); return 0; } int num = list.BinarySearch(item, reverseComparer); if (num < 0) { num = ~num; } list.Insert(num, item); return num; } public static int AddAcending<T>(this List<T> list, T item) where T : IComparable<T> { if (list.Count == 0 || list[list.Count - 1].CompareTo(item) <= 0) { list.Add(item); return list.Count - 1; } if (list[0].CompareTo(item) >= 0) { list.Insert(0, item); return 0; } int num = list.BinarySearch(item); if (num < 0) { num = ~num; } list.Insert(num, item); return num; } } public static class StringExt { public static string AppendIf(this string value, bool expression, string append) { if (!expression) { return value; } return value + append; } } public static class TextMeshProUGUIExt { public static TextMeshProUGUI CopyFrom(this TextMeshProUGUI source, TextMeshProUGUI target) { //IL_0050: 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_0068: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)source).font = ((target != null) ? ((TMP_Text)target).font : null); ((TMP_Text)source).fontSharedMaterial = ((target != null) ? ((TMP_Text)target).fontSharedMaterial : null); ((TMP_Text)source).fontMaterial = ((target != null) ? ((TMP_Text)target).fontMaterial : null); ((TMP_Text)source).outlineWidth = ((TMP_Text)target).outlineWidth; ((TMP_Text)source).fontSize = ((TMP_Text)target).fontSize; ((TMP_Text)source).horizontalAlignment = ((TMP_Text)target).horizontalAlignment; ((TMP_Text)source).verticalAlignment = ((TMP_Text)target).verticalAlignment; ((TMP_Text)source).alignment = ((TMP_Text)target).alignment; ((TMP_Text)source).richText = ((TMP_Text)target).richText; ((TMP_Text)source).vertexBufferAutoSizeReduction = ((TMP_Text)target).vertexBufferAutoSizeReduction; ((TMP_Text)source).extraPadding = ((TMP_Text)target).extraPadding; return source; } } } namespace EnhancedQOL.Binder { public enum ECardBorderSortType { None = -1, Base, FirstEdition, Silver, Gold, Ex, FullArt } public enum ECardCountDisplayType { None = -1, CurrentRarityFiler, CurrentFilters, AllRarity } public enum ECardElementSortType { None = -1, Fire, Earth, Water, Wind } public enum ECardRaritySortType { None = -1, Common, Rare, Epic, Legendary } public class EnhancedBinderSort : MonoBehaviour { private int m_MinDupeCount; private ECardRaritySortType m_RaritySortingType = ECardRaritySortType.None; private ECardElementSortType m_ElementSortingType = ECardElementSortType.None; private ECardBorderSortType m_BorderSortingType = ECardBorderSortType.None; private KeyboardShortcut m_RaritySortFilterToggleShortcut; private KeyboardShortcut m_BorderSortFilterToggleShortcut; private KeyboardShortcut m_ElementSortFilterToggleShortcut; private KeyboardShortcut m_RaritySortFilterClearShortcut; private KeyboardShortcut m_BorderSortFilterClearShortcut; private KeyboardShortcut m_ElementSortFilterClearShortcut; private KeyboardShortcut m_AllSortFilterClearShortcut; public EnhancedBinderUIManager EnhancedBinderUIManager { get; private set; } private void Awake() { //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_0035: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) m_MinDupeCount = Settings.Instance.minDupeCount.Value; m_RaritySortFilterToggleShortcut = Settings.Instance.raritySortFilterToggle.Value; m_BorderSortFilterToggleShortcut = Settings.Instance.borderSortFilterToggle.Value; m_ElementSortFilterToggleShortcut = Settings.Instance.elementSortFilterToggle.Value; m_RaritySortFilterClearShortcut = Settings.Instance.raritySortFilterClear.Value; m_BorderSortFilterClearShortcut = Settings.Instance.borderSortFilterClear.Value; m_ElementSortFilterClearShortcut = Settings.Instance.elementSortFilterClear.Value; m_AllSortFilterClearShortcut = Settings.Instance.allFilterClear.Value; Settings.Instance.isEnhancedBinderSortEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; if (EnhancedBinderUIManager != null) { ((Behaviour)EnhancedBinderUIManager).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; } if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; Settings.Instance.minDupeCount.SettingChanged += delegate { m_MinDupeCount = Settings.Instance.minDupeCount.Value; }; Settings.Instance.raritySortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_RaritySortFilterToggleShortcut = Settings.Instance.raritySortFilterToggle.Value; }; Settings.Instance.borderSortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_BorderSortFilterToggleShortcut = Settings.Instance.borderSortFilterToggle.Value; }; Settings.Instance.elementSortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_ElementSortFilterToggleShortcut = Settings.Instance.elementSortFilterToggle.Value; }; Settings.Instance.raritySortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_RaritySortFilterClearShortcut = Settings.Instance.raritySortFilterClear.Value; }; Settings.Instance.borderSortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_BorderSortFilterClearShortcut = Settings.Instance.borderSortFilterClear.Value; }; Settings.Instance.elementSortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_ElementSortFilterClearShortcut = Settings.Instance.elementSortFilterClear.Value; }; Settings.Instance.allFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_AllSortFilterClearShortcut = Settings.Instance.allFilterClear.Value; }; } public void OnEnable() { if (EnhancedBinderUIManager != null) { ((Behaviour)EnhancedBinderUIManager).enabled = true; } if (EnhancedBinderUIManager == null) { EnhancedBinderUIManager enhancedBinderUIManager2 = (EnhancedBinderUIManager = ((Component)this).gameObject.AddComponent<EnhancedBinderUIManager>()); } } public void OnDisable() { if (EnhancedBinderUIManager != null) { Plugin.Logger.LogError((object)(EnhancedBinderUIManager == null)); ((Behaviour)EnhancedBinderUIManager).enabled = false; } } public void OnCollectionBinderUIAwake(CollectionBinderUI instance) { ((Behaviour)EnhancedBinderUIManager).enabled = true; } public void OnCollectionBinderFlipAnimCtrlUpdate(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl, bool isAlbumOpen) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Invalid comparison between Unknown and I4 //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected I4, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected I4, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected I4, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected I4, but got Unknown //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected I4, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected I4, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected I4, but got Unknown if (!((Behaviour)this).enabled || !isAlbumOpen || (int)collectionBinderFlipAnimCtrl.GetExpansionType() == 2 || (int)collectionBinderFlipAnimCtrl.GetSortingType() == 3) { return; } if (CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count <= 0) { if (((KeyboardShortcut)(ref m_RaritySortFilterToggleShortcut)).IsDown()) { m_RaritySortingType = m_RaritySortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_BorderSortFilterToggleShortcut)).IsDown()) { m_BorderSortingType = m_BorderSortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_ElementSortFilterToggleShortcut)).IsDown()) { m_ElementSortingType = m_ElementSortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_AllSortFilterClearShortcut)).IsDown()) { m_RaritySortingType = ECardRaritySortType.None; m_BorderSortingType = ECardBorderSortType.None; m_ElementSortingType = ECardElementSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_BorderSortFilterClearShortcut)).IsDown()) { m_BorderSortingType = ECardBorderSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_ElementSortFilterClearShortcut)).IsDown()) { m_ElementSortingType = ECardElementSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_RaritySortFilterClearShortcut)).IsDown()) { m_RaritySortingType = ECardRaritySortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } } EnhancedBinderUIManager?.OnUpdate(m_RaritySortingType, m_BorderSortingType, m_ElementSortingType); } public bool OnSort(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Invalid comparison between Unknown and I4 //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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 bool flag = !((Behaviour)this).enabled || (int)collectionBinderFlipAnimCtrl.GetExpansionType() == 2; if (!flag) { ECollectionSortingType sortingType = collectionBinderFlipAnimCtrl.GetSortingType(); Func<bool> func = (((int)sortingType == 3) ? ((Func<bool>)(() => true)) : (((int)sortingType != 4) ? ((Func<bool>)delegate { //IL_001d: 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) List<int> sortedCardList = collectionBinderFlipAnimCtrl.GetSortedCardList(); new List<int>(); return new CollectedCardsUtility.Builder().WithSortType(collectionBinderFlipAnimCtrl.GetSortingType()).WithExpansionType(collectionBinderFlipAnimCtrl.GetExpansionType()).WithRarityType(m_RaritySortingType) .WithElementType(m_ElementSortingType) .WithBorderType(m_BorderSortingType) .WithMinDupeCount(m_MinDupeCount) .Build() .Sort(sortedCardList); }) : ((Func<bool>)(() => true)))); flag = func(); } return flag; } public void OnBinderOpen(ECollectionSortingType sortingType, ECardExpansionType expansionType) { //IL_0013: 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) if (((Behaviour)this).enabled) { EnhancedBinderUIManager?.OnCollectionBinderOpen(sortingType, expansionType, m_RaritySortingType, m_BorderSortingType, m_ElementSortingType); } } } public class EnhancedBinderUIManager : MonoBehaviour { private bool m_IsInitialized; private GameObject m_ScreenGrp; private TextMeshProUGUI m_CardsCollectedText; private TextMeshProUGUI m_TotalCollectionCountText; private TextMeshProUGUI m_RareCollectionCountText; private TextMeshProUGUI m_EpicCollectionCountText; private TextMeshProUGUI m_LegendaryCollectionCountText; private List<Tuple<int, int>> m_CardCounts = new List<Tuple<int, int>>(); private ECardCountDisplayType m_CardCountDisplayType; private void Awake() { Settings.Instance.cardCountDisplayType.SettingChanged += delegate { m_CardCountDisplayType = Settings.Instance.cardCountDisplayType.Value; if (m_IsInitialized) { if (Settings.Instance.cardCountDisplayType.Value == ECardCountDisplayType.AllRarity) { ((Behaviour)m_RareCollectionCountText).enabled = true; ((Behaviour)m_EpicCollectionCountText).enabled = true; ((Behaviour)m_LegendaryCollectionCountText).enabled = true; } else { ((Behaviour)m_RareCollectionCountText).enabled = false; ((Behaviour)m_EpicCollectionCountText).enabled = false; ((Behaviour)m_LegendaryCollectionCountText).enabled = false; } } }; Settings.Instance.commonCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_TotalCollectionCountText).transform.localPosition = Settings.Instance.commonCardCountPosition.Value; }; Settings.Instance.commonCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_TotalCollectionCountText).fontSize = Settings.Instance.commonCardCountFontSize.Value; }; Settings.Instance.rareCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_RareCollectionCountText).transform.localPosition = Settings.Instance.rareCardCountPosition.Value; }; Settings.Instance.rareCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_RareCollectionCountText).fontSize = Settings.Instance.rareCardCountFontSize.Value; }; Settings.Instance.epicCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_EpicCollectionCountText).transform.localPosition = Settings.Instance.epicCardCountPosition.Value; }; Settings.Instance.epicCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_EpicCollectionCountText).fontSize = Settings.Instance.epicCardCountFontSize.Value; }; Settings.Instance.legendaryCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_LegendaryCollectionCountText).transform.localPosition = Settings.Instance.legendaryCardCountPosition.Value; }; Settings.Instance.legendaryCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_LegendaryCollectionCountText).fontSize = Settings.Instance.legendaryCardCountFontSize.Value; }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_018a: 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_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_0318: 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_02aa: Unknown result type (might be due to invalid IL or missing references) if (!m_IsInitialized) { CollectionBinderUI val = Object.FindFirstObjectByType<CollectionBinderUI>(); if (val != null) { m_ScreenGrp = val.m_ScreenGrp; if (m_CardsCollectedText == null) { m_CardsCollectedText = ((Component)m_ScreenGrp.transform.Find("AnimGrp/CardCollectedText")).GetComponent<TextMeshProUGUI>(); } ((TMP_Text)m_CardsCollectedText).enableAutoSizing = false; ((TMP_Text)m_CardsCollectedText).fontSize = 30f; ((TMP_Text)m_CardsCollectedText).rectTransform.sizeDelta = new Vector2(800f, 100f); if (m_TotalCollectionCountText == null) { m_TotalCollectionCountText = ((Component)m_ScreenGrp.transform.Find("AnimGrp/CardCollected")).GetComponent<TextMeshProUGUI>(); } ((TMP_Text)m_TotalCollectionCountText).transform.localPosition = Settings.Instance.commonCardCountPosition.Value; ((TMP_Text)m_TotalCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_TotalCollectionCountText).fontSize = Settings.Instance.commonCardCountFontSize.Value; ((TMP_Text)m_TotalCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 100f); if (m_RareCollectionCountText == null) { m_RareCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_RareCollectionCountText).gameObject).name = "RareCount"; ((TMP_Text)m_RareCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_RareCollectionCountText).transform.localPosition = Settings.Instance.rareCardCountPosition.Value; ((TMP_Text)m_RareCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_RareCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_RareCollectionCountText).fontSize = Settings.Instance.rareCardCountFontSize.Value; if (m_EpicCollectionCountText == null) { m_EpicCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_EpicCollectionCountText).gameObject).name = "EpicCount"; ((TMP_Text)m_EpicCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_EpicCollectionCountText).transform.localPosition = Settings.Instance.epicCardCountPosition.Value; ((TMP_Text)m_EpicCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_EpicCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_EpicCollectionCountText).fontSize = Settings.Instance.epicCardCountFontSize.Value; if (m_LegendaryCollectionCountText == null) { m_LegendaryCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_LegendaryCollectionCountText).gameObject).name = "LegendCount"; ((TMP_Text)m_LegendaryCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_LegendaryCollectionCountText).transform.localPosition = Settings.Instance.legendaryCardCountPosition.Value; ((TMP_Text)m_LegendaryCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_LegendaryCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_LegendaryCollectionCountText).fontSize = Settings.Instance.legendaryCardCountFontSize.Value; m_CardCountDisplayType = Settings.Instance.cardCountDisplayType.Value; } } m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_ScreenGrp = null; if (m_CardsCollectedText != null) { ((TMP_Text)m_CardsCollectedText).enableAutoSizing = true; m_CardsCollectedText = null; } if (m_TotalCollectionCountText != null) { ((TMP_Text)m_TotalCollectionCountText).enableAutoSizing = true; m_TotalCollectionCountText = null; } if (m_RareCollectionCountText != null) { Object.Destroy((Object)(object)m_RareCollectionCountText); m_RareCollectionCountText = null; } if (m_EpicCollectionCountText != null) { Object.Destroy((Object)(object)m_EpicCollectionCountText); m_EpicCollectionCountText = null; } if (m_LegendaryCollectionCountText != null) { Object.Destroy((Object)(object)m_LegendaryCollectionCountText); m_LegendaryCollectionCountText = null; } m_IsInitialized = false; } } public void OnUpdate(ECardRaritySortType raritySortingType, ECardBorderSortType borderSortingType, ECardElementSortType elementSortingType) { if (((Behaviour)this).enabled) { string text = "Cards Collected".AppendIf(raritySortingType != ECardRaritySortType.None, $" [{raritySortingType}]").AppendIf(borderSortingType != ECardBorderSortType.None, $" [{borderSortingType}]").AppendIf(elementSortingType != ECardElementSortType.None, $" [{elementSortingType}]"); ((TMP_Text)m_CardsCollectedText).SetText(text, true); if (m_CardCountDisplayType == ECardCountDisplayType.AllRarity) { ((TMP_Text)m_TotalCollectionCountText).SetText($"Common: {m_CardCounts[0].Item1}/{m_CardCounts[0].Item2} ({Math.Round((float)m_CardCounts[0].Item1 / (float)m_CardCounts[0].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_RareCollectionCountText).SetText($"Rare: {m_CardCounts[1].Item1}/{m_CardCounts[1].Item2} ({Math.Round((float)m_CardCounts[1].Item1 / (float)m_CardCounts[1].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_EpicCollectionCountText).SetText($"Epic: {m_CardCounts[2].Item1}/{m_CardCounts[2].Item2} ({Math.Round((float)m_CardCounts[2].Item1 / (float)m_CardCounts[2].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_LegendaryCollectionCountText).SetText($"Legendary: {m_CardCounts[3].Item1}/{m_CardCounts[3].Item2} ({Math.Round((float)m_CardCounts[3].Item1 / (float)m_CardCounts[3].Item2 * 100f, 1)}%)", true); } else { ((TMP_Text)m_TotalCollectionCountText).SetText($"Common: {m_CardCounts[0].Item1}/{m_CardCounts[0].Item2} ({Math.Round((float)m_CardCounts[0].Item1 / (float)m_CardCounts[0].Item2 * 100f, 1)}%)", true); } } } public void OnCollectionBinderOpen(ECollectionSortingType sortingType, ECardExpansionType expansionType, ECardRaritySortType raritySortingType, ECardBorderSortType borderSortingType, ECardElementSortType elementSortingType) { //IL_003a: 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_00a4: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0133: 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_015f: Unknown result type (might be due to invalid IL or missing references) m_CardCounts.Clear(); switch (m_CardCountDisplayType) { case ECardCountDisplayType.None: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).Build() .GetCardCount()); break; case ECardCountDisplayType.CurrentFilters: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(raritySortingType) .WithBorderType(borderSortingType) .WithElementType(elementSortingType) .Build() .GetCardCount()); break; case ECardCountDisplayType.CurrentRarityFiler: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(raritySortingType) .Build() .GetCardCount()); break; case ECardCountDisplayType.AllRarity: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Common) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Rare) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Epic) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Legendary) .Build() .GetCardCount()); break; } while (m_CardCounts.Count != 4) { m_CardCounts.Add(new Tuple<int, int>(1, 1)); } } } }
plugins/EnhancedQOL.dll
Decompiled 15 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EnhancedQOL.Binder; using EnhancedQOL.Extensions; using EnhancedQOL.Helpers; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: AssemblyCompany("EnhancedQOL")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.4.1.0")] [assembly: AssemblyInformationalVersion("1.4.1+dd4412d7b2a9f1908bfd6e9b5c0a9adfb76b24e8")] [assembly: AssemblyProduct("EnhancedQOL")] [assembly: AssemblyTitle("EnhancedQOL")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.4.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } internal sealed class ConfigurationManagerAttributes { public delegate void CustomHotkeyDrawerFunc(ConfigEntryBase setting, ref bool isCurrentlyAcceptingInput); public bool? ShowRangeAsPercent; public Action<ConfigEntryBase> CustomDrawer; public CustomHotkeyDrawerFunc CustomHotkeyDrawer; public bool? Browsable; public string Category; public object DefaultValue; public bool? HideDefaultButton; public bool? HideSettingName; public string Description; public string DispName; public int? Order; public bool? ReadOnly; public bool? IsAdvanced; public Func<object, string> ObjToStr; public Func<string, object> StrToObj; } namespace EnhancedQOL { [HarmonyPatch(typeof(InteractableCard3d))] internal class InteractableCard3dPatches { [HarmonyPatch("OnFinishLerp")] [HarmonyPostfix] public static void OnFinishLerpPostfix(ref InteractableCard3d __instance) { Plugin.PutItBack.OnCardFinishLerp(ref __instance); } } [BepInPlugin("EnhancedQOL", "EnhancedQOL", "1.4.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private readonly Harmony m_Harmony = new Harmony("EnhancedQOL"); private bool m_HasFinishedLoading; private bool m_ApplicationQuiting; private GameObject m_ChildGameObject; internal static EnhancedBinderSort EnhancedBinderSort { get; private set; } internal static PutItBack PutItBack { get; private set; } internal static ScrollWheeler ScrollWheeler { get; private set; } internal static SceneRaycaster Raycaster { get; private set; } internal static ManualLogSource Logger { get; private set; } private Plugin() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; m_Harmony.PatchAll(); Logger.LogInfo((object)"Plugin EnhancedQOL v1.4.1 by GhostNarwhal is loaded!"); } private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown Settings.Instance.Load(this); if (m_ChildGameObject == null) { m_ChildGameObject = new GameObject("EnhancedQOL+Internal Mods"); } m_ChildGameObject.transform.parent = ((Component)this).gameObject.transform; m_HasFinishedLoading = false; m_ApplicationQuiting = false; EnhancedBinderSort = m_ChildGameObject.AddComponent<EnhancedBinderSort>(); PutItBack = m_ChildGameObject.AddComponent<PutItBack>(); ScrollWheeler = m_ChildGameObject.AddComponent<ScrollWheeler>(); Raycaster = m_ChildGameObject.AddComponent<SceneRaycaster>(); ((Behaviour)this).enabled = Settings.Instance.isEnhancedQOLEnabled.Value; Settings.Instance.isEnhancedQOLEnabled.SettingChanged += delegate { if (!Settings.Instance.isEnhancedQOLEnabled.Value) { Settings.Instance.isPutItBackEnabled.Value = false; Settings.Instance.isEnhancedBinderSortEnabled.Value = false; Settings.Instance.isScrollWheelerEnabled.Value = false; } ((Behaviour)this).enabled = Settings.Instance.isEnhancedQOLEnabled.Value; }; SceneManager.sceneLoaded += SceneLoaded; } private void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode) { if (((Scene)(ref scene)).name == "Start") { m_HasFinishedLoading = true; if (((Behaviour)this).enabled) { OnEnable(); } } else { ((Behaviour)Raycaster).enabled = false; } } private void OnEnable() { if (m_HasFinishedLoading) { ((Behaviour)Raycaster).enabled = true; ((Behaviour)EnhancedBinderSort).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; ((Behaviour)PutItBack).enabled = Settings.Instance.isPutItBackEnabled.Value; ((Behaviour)ScrollWheeler).enabled = Settings.Instance.isScrollWheelerEnabled.Value; } } private void OnDisable() { if (Raycaster != null) { ((Behaviour)Raycaster).enabled = false; } if (!m_ApplicationQuiting) { Settings.Instance.isEnhancedQOLEnabled.Value = false; Settings.Instance.isPutItBackEnabled.Value = false; Settings.Instance.isScrollWheelerEnabled.Value = false; } } private void OnDestroy() { if (m_ChildGameObject != null) { Object.Destroy((Object)(object)m_ChildGameObject); } m_Harmony.UnpatchSelf(); Logger.LogInfo((object)"Plugin EnhancedQOL is unloaded!"); } private void OnApplicationQuit() { m_ApplicationQuiting = true; } } public class PutItBack : MonoBehaviour { private bool m_IsReturningCard; private int m_CurrentBinderPageIndex; private List<BinderPageGrp> m_BinderPageGrpList = new List<BinderPageGrp>(); private List<HeldCardData> m_HeldCardDataList = new List<HeldCardData>(); private List<Type> m_ItemCompartmentTypeList = new List<Type>(); private ECollectionSortingType m_SortingType; private bool m_IsInitialized; private void Awake() { Settings.Instance.isPutItBackEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isPutItBackEnabled.Value; if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_IsInitialized = false; } } public void OnUpdate(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) if (((Behaviour)this).enabled && collectionBinderFlipAnimCtrl.IsBookOpen()) { m_CurrentBinderPageIndex = collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex(); m_BinderPageGrpList = collectionBinderFlipAnimCtrl.m_BinderPageGrpList; m_SortingType = collectionBinderFlipAnimCtrl.GetSortingType(); if (UnityInput.Current.mouseScrollDelta.y > 0f && CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count > 0) { collectionBinderFlipAnimCtrl.OnMouseButtonUp(); } if (UnityInput.Current.mouseScrollDelta.y < 0f) { collectionBinderFlipAnimCtrl.OnRightMouseButtonUp(); } } } public bool OnRightMouseButtonUp(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { if (((Behaviour)this).enabled && !m_IsReturningCard) { InteractableCard3d currentRaycastedInteractableCard3d = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; bool? flag = ((currentRaycastedInteractableCard3d != null) ? new bool?(currentRaycastedInteractableCard3d.m_Card3dUI.m_CardUI.GetCardData().IsOwned()) : null); if (!flag.HasValue || !flag.Value) { return false; } if (InteractionPlayerController.HasEnoughSlotToHoldCard()) { List<HeldCardData> heldCardDataList = m_HeldCardDataList; HeldCardData obj = new HeldCardData { BinderCardSlotIndex = collectionBinderFlipAnimCtrl.GetRaycastedCardIndex(), BinderPageIndex = collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex() }; InteractableCard3d currentRaycastedInteractableCard3d2 = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; obj.CardData = ((currentRaycastedInteractableCard3d2 != null) ? currentRaycastedInteractableCard3d2.m_Card3dUI.m_CardUI.GetCardData() : null); InteractableCard3d currentRaycastedInteractableCard3d3 = collectionBinderFlipAnimCtrl.m_CurrentRaycastedInteractableCard3d; obj.Transform = ((currentRaycastedInteractableCard3d3 != null) ? ((Component)currentRaycastedInteractableCard3d3).transform : null); heldCardDataList.Add(obj); } } return true; } public bool OnLeftMouseButtonUp(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { if (((Behaviour)this).enabled && !m_IsReturningCard) { List<InteractableCard3d> heldCards = CSingleton<InteractionPlayerController>.Instance.GetHeldCards(); if (heldCards.Count > 0) { int num = m_HeldCardDataList.Last().BinderCardSlotIndex; int num2 = m_HeldCardDataList.Last().BinderPageIndex - collectionBinderFlipAnimCtrl.GetCurrentBinderPageIndex(); int index = 0; if (num2 <= -1) { if (num >= 6) { num -= 6; } index = 2; } else if (num2 >= 1) { if (num <= 5) { num += 6; } index = 1; } Transform transform = ((Component)collectionBinderFlipAnimCtrl.m_BinderPageGrpList[index].m_CardList[num]).transform; ((InteractableObject)heldCards.Last()).StopLerpToTransform(); ((InteractableObject)heldCards.Last()).LerpToTransform(transform, transform.parent); m_IsReturningCard = true; return false; } } return true; } public void OnCardFinishLerp(ref InteractableCard3d interactableCard3D) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) if (!((Behaviour)this).enabled || !m_IsReturningCard) { return; } List<InteractableCard3d> heldCards = CSingleton<InteractionPlayerController>.Instance.GetHeldCards(); if (heldCards.Count > 0) { CPlayerData.AddCard(m_HeldCardDataList.Last().CardData, 1); int num = m_HeldCardDataList.Last().BinderPageIndex - m_CurrentBinderPageIndex; if (num >= -1 && num <= 1) { int index = ((num == -1) ? 2 : num); int cardAmount = CPlayerData.GetCardAmount(m_HeldCardDataList.Last().CardData); m_BinderPageGrpList[index].SetSingleCard(m_HeldCardDataList.Last().BinderCardSlotIndex, m_HeldCardDataList.Last().CardData, cardAmount, m_SortingType); ((Component)m_BinderPageGrpList[index].m_CardList[m_HeldCardDataList.Last().BinderCardSlotIndex]).gameObject.SetActive(true); ((Component)m_HeldCardDataList.Last().Transform).gameObject.SetActive(true); } ((InteractableObject)heldCards.Last()).OnDestroyed(); heldCards.RemoveAt(heldCards.Count - 1); m_HeldCardDataList.RemoveAt(m_HeldCardDataList.Count - 1); CPlayerData.m_HoldCardDataList.RemoveAt(CPlayerData.m_HoldCardDataList.Count - 1); SetHoldCardEularRotation(heldCards.Count); m_IsReturningCard = false; } } private void SetHoldCardEularRotation(int heldCardCount) { //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) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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) Quaternion value = Quaternion.Euler(0f, 0f, 0f); if (heldCardCount == 0) { CSingleton<InteractionPlayerController>.Instance.SetHoldCardGroupTargetRotation(value); CSingleton<InteractionPlayerController>.Instance.EnterViewCardAlbumMode(); } else { value = Quaternion.Euler(0f, 0f, Mathf.Lerp(0f, 15f, (float)heldCardCount / 7f)); CSingleton<InteractionPlayerController>.Instance.SetHoldCardGroupTargetRotation(value); } } } public class ScrollWheeler : MonoBehaviour { private bool m_IsInitialized; private void Awake() { Settings.Instance.isScrollWheelerEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isScrollWheelerEnabled.Value; if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_IsInitialized = false; } } private void Update() { //IL_0005: 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) if (UnityInput.Current.mouseScrollDelta.y > 0f) { OnScrollWheel(placingItem: true); } if (UnityInput.Current.mouseScrollDelta.y < 0f) { OnScrollWheel(placingItem: false); } } private void OnScrollWheel(bool placingItem) { InteractablePackagingBox_Item packagingBox = CSingleton<InteractionPlayerController>.Instance.GetCurrentHeldBox(); int heldCardCount = CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count; int heldItemCount = CSingleton<InteractionPlayerController>.Instance.GetHeldItemList().Count; Component raycastedComponent = Plugin.Raycaster.RaycastedComponent; if (raycastedComponent == null) { goto IL_0214; } ShelfCompartment val = default(ShelfCompartment); ref ShelfCompartment reference = ref val; Component obj = raycastedComponent; reference = (ShelfCompartment)(object)((obj is ShelfCompartment) ? obj : null); Action action; if (val != null && packagingBox != null) { action = delegate { if (placingItem) { packagingBox.DispenseItem(true, val); } else { packagingBox.RemoveItemFromShelf(true, val); } }; } else { ShelfCompartment val2 = default(ShelfCompartment); ref ShelfCompartment reference2 = ref val2; Component obj2 = raycastedComponent; reference2 = (ShelfCompartment)(object)((obj2 is ShelfCompartment) ? obj2 : null); if (val2 != null && val2.m_CanPutBox && !placingItem) { action = delegate { ((InteractableObject)((Component)val2).gameObject.GetComponent<InteractableStorageCompartment>()).OnMouseButtonUp(); }; } else { InteractablePackagingBox_Item val3 = default(InteractablePackagingBox_Item); ref InteractablePackagingBox_Item reference3 = ref val3; Component obj3 = raycastedComponent; reference3 = (InteractablePackagingBox_Item)(object)((obj3 is InteractablePackagingBox_Item) ? obj3 : null); if (val3 != null && packagingBox != null) { action = delegate { //IL_0096: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) if (!((InteractablePackagingBox)val3).IsBoxOpened()) { ((InteractablePackagingBox)val3).OnPressOpenBox(); } else if (!((InteractablePackagingBox)packagingBox).IsBoxOpened()) { ((InteractablePackagingBox)packagingBox).OnPressOpenBox(); } else { InteractablePackagingBox_Item val7 = (placingItem ? val3 : packagingBox); InteractablePackagingBox_Item val8 = (placingItem ? packagingBox : val3); Item lastItem = val8.m_ItemCompartment.GetLastItem(); if (lastItem != null && (val7.m_ItemCompartment.GetItemType() == val8.m_ItemCompartment.GetItemType() || val7.m_ItemCompartment.GetItemCount() == 0)) { lastItem.LerpToTransform(val7.m_ItemCompartment.GetLastEmptySlotTransform(), val7.m_ItemCompartment.GetLastEmptySlotTransform().parent, false); val7.m_ItemCompartment.SetCompartmentItemType(val8.m_ItemCompartment.GetItemType()); val7.m_ItemCompartment.AddItem(lastItem, false); val8.m_ItemCompartment.RemoveItem(lastItem); val7.m_ItemCompartment.SetPriceTagItemImage(val8.GetItemType()); val7.m_ItemCompartment.SetPriceTagVisibility(false); val7.m_ItemCompartment.RefreshPriceTagItemPriceText(); } } }; } else if (raycastedComponent is InteractableTrashBin && packagingBox != null && placingItem) { action = delegate { //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (packagingBox.m_ItemCompartment.GetItemCount() > 0) { ((UIScreenBase)CSingleton<InteractionPlayerController>.Instance.m_ConfirmTrashScreen).OpenScreen(); } else { ((InteractableTrashBin)Plugin.Raycaster.RaycastedComponent).DiscardBox((InteractablePackagingBox)(object)packagingBox, true); } }; } else { InteractableWorkbench val4 = default(InteractableWorkbench); ref InteractableWorkbench reference4 = ref val4; Component obj4 = raycastedComponent; reference4 = (InteractableWorkbench)(object)((obj4 is InteractableWorkbench) ? obj4 : null); if (val4 != null && packagingBox != null) { action = delegate { if (placingItem) { val4.DispenseItemFromBox(packagingBox, true); } else { val4.RemoveItemFromShelf(true, packagingBox); } }; } else { InteractableCardCompartment val5 = default(InteractableCardCompartment); ref InteractableCardCompartment reference5 = ref val5; Component obj5 = raycastedComponent; reference5 = (InteractableCardCompartment)(object)((obj5 is InteractableCardCompartment) ? obj5 : null); if (val5 != null) { action = delegate { if (placingItem && heldCardCount > 0) { val5.OnMouseButtonUp(); } else if (!placingItem) { val5.OnRightMouseButtonUp(); } }; } else { CardShelf val6 = default(CardShelf); ref CardShelf reference6 = ref val6; Component obj6 = raycastedComponent; reference6 = (CardShelf)(object)((obj6 is CardShelf) ? obj6 : null); if (val6 == null) { goto IL_0214; } action = delegate { foreach (InteractableCardCompartment cardCompartment in val6.GetCardCompartmentList()) { if (placingItem && heldCardCount > 0 && cardCompartment.m_StoredCardList.Count == 0) { cardCompartment.OnMouseButtonUp(); break; } if (!placingItem && cardCompartment.m_StoredCardList.Count > 0) { cardCompartment.OnRightMouseButtonUp(); break; } } }; } } } } } goto IL_0226; IL_0226: action(); return; IL_0214: action = delegate { if (raycastedComponent != null && placingItem && heldItemCount > 0) { CSingleton<InteractionPlayerController>.Instance.PutItemOnShelf(); } else if (raycastedComponent != null && !placingItem && packagingBox == null) { CSingleton<InteractionPlayerController>.Instance.TakeItemFromShelf(); } }; goto IL_0226; } } public class Settings { public ConfigEntry<bool> isEnhancedQOLEnabled; public ConfigEntry<bool> isScrollWheelerEnabled; public ConfigEntry<bool> isPutItBackEnabled; public ConfigEntry<bool> isEnhancedBinderSortEnabled; public ConfigEntry<int> minDupeCount; public ConfigEntry<ECardCountDisplayType> cardCountDisplayType; public ConfigEntry<Vector3> commonCardCountPosition; public ConfigEntry<int> commonCardCountFontSize; public ConfigEntry<Vector3> rareCardCountPosition; public ConfigEntry<int> rareCardCountFontSize; public ConfigEntry<Vector3> epicCardCountPosition; public ConfigEntry<int> epicCardCountFontSize; public ConfigEntry<Vector3> legendaryCardCountPosition; public ConfigEntry<int> legendaryCardCountFontSize; public ConfigEntry<KeyboardShortcut> raritySortFilterToggle; public ConfigEntry<KeyboardShortcut> borderSortFilterToggle; public ConfigEntry<KeyboardShortcut> elementSortFilterToggle; public ConfigEntry<KeyboardShortcut> elementSortFilterClear; public ConfigEntry<KeyboardShortcut> borderSortFilterClear; public ConfigEntry<KeyboardShortcut> allFilterClear; public ConfigEntry<KeyboardShortcut> raritySortFilterClear; private static Settings m_instance; public static Settings Instance { get { if (m_instance == null) { m_instance = new Settings(); } return m_instance; } } public void Load(Plugin plugin) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_016c: 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_019c: Expected O, but got Unknown //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Expected O, but got Unknown //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Expected O, but got Unknown //IL_0265: 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_0295: Expected O, but got Unknown //IL_02b2: 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_02e2: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Expected O, but got Unknown //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_037b: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Expected O, but got Unknown //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Expected O, but got Unknown //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Expected O, but got Unknown //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_045f: Expected O, but got Unknown //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Expected O, but got Unknown //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Expected O, but got Unknown //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_053f: Unknown result type (might be due to invalid IL or missing references) //IL_0549: Expected O, but got Unknown //IL_0581: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Expected O, but got Unknown //IL_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05d5: Unknown result type (might be due to invalid IL or missing references) //IL_05df: Expected O, but got Unknown //IL_0617: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Expected O, but got Unknown isEnhancedQOLEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL", "Enabled", true, new ConfigDescription("Enables or disables the entire plugin", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 25 } })); isScrollWheelerEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Scroll Wheeler", "Enabled", true, new ConfigDescription("Enables or disables Scroll Wheeler", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); isPutItBackEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Put It Back", "Enable", true, new ConfigDescription("Enables or disables put it back", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); isEnhancedBinderSortEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("EnhancedQOL - Enhanced Album Sort", "Enable", true, new ConfigDescription("Enables or disables Enhanced Sorting", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 20 } })); minDupeCount = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Minimum Duplication Count", 1, new ConfigDescription("The minimum number of dupes for cards to show in Duplication sort", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, int.MaxValue), new object[1] { new ConfigurationManagerAttributes { Order = 19 } })); raritySortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Rarity Sort Filter Toggle", new KeyboardShortcut((KeyCode)122, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through rarity filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 18 } })); raritySortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Rarity Sort Filter", new KeyboardShortcut((KeyCode)122, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current rarity filter", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 17 } })); borderSortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Border Sort Filter Toggle", new KeyboardShortcut((KeyCode)120, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through border filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 16 } })); borderSortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Border Sort Filter", new KeyboardShortcut((KeyCode)120, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current border filters.", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 15 } })); elementSortFilterToggle = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Element Sort Filter Toggle", new KeyboardShortcut((KeyCode)99, Array.Empty<KeyCode>()), new ConfigDescription("Key to cycle through element filters", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 14 } })); elementSortFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear Element Sort Filter", new KeyboardShortcut((KeyCode)99, (KeyCode[])(object)new KeyCode[1] { (KeyCode)304 }), new ConfigDescription("Key to clear current element filter", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 13 } })); allFilterClear = ((BaseUnityPlugin)plugin).Config.Bind<KeyboardShortcut>("EnhancedQOL - Enhanced Album Sort", "Clear all sort filters", new KeyboardShortcut((KeyCode)118, Array.Empty<KeyCode>()), new ConfigDescription("Key to clear all current filters", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 12 } })); cardCountDisplayType = ((BaseUnityPlugin)plugin).Config.Bind<ECardCountDisplayType>("EnhancedQOL - Enhanced Album Sort", "Card Count Display Type", ECardCountDisplayType.None, new ConfigDescription("How you want to view the card counts", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 11 } })); commonCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Common Card Count Display Position", new Vector3(0f, 445f, 0f), new ConfigDescription("Position for common card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 10 } })); commonCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Common Card Count Display Font Size", 34, new ConfigDescription("Common card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 9 } })); rareCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Rare Card Count Display Position", new Vector3(0f, 400f, 0f), new ConfigDescription("Position for rare card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 8 } })); rareCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Rare Card Count Display Font Size", 34, new ConfigDescription("Rare card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 7 } })); epicCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Epic Card Count Display Position", new Vector3(0f, 350f, 0f), new ConfigDescription("Position for epic card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 6 } })); epicCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Epic Card Count Display Font Size", 34, new ConfigDescription("Epic card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 5 } })); legendaryCardCountPosition = ((BaseUnityPlugin)plugin).Config.Bind<Vector3>("EnhancedQOL - Enhanced Album Sort", "Legendary Card Count Display Position", new Vector3(0f, 300f, 0f), new ConfigDescription("Position for legendary card count text", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 4 } })); legendaryCardCountFontSize = ((BaseUnityPlugin)plugin).Config.Bind<int>("EnhancedQOL - Enhanced Album Sort", "Legendary Card Count Display Font Size", 34, new ConfigDescription("Legendary card count text font size", (AcceptableValueBase)null, new object[1] { new ConfigurationManagerAttributes { Order = 3 } })); } private Settings() { } } public static class MyPluginInfo { public const string PLUGIN_GUID = "EnhancedQOL"; public const string PLUGIN_NAME = "EnhancedQOL"; public const string PLUGIN_VERSION = "1.4.1"; } } namespace EnhancedQOL.Patches { [HarmonyPatch(typeof(CollectionBinderFlipAnimCtrl))] public class CollectionBinderFlipAnimCtrlPatches { [HarmonyPatch("Update")] [HarmonyPrefix] private static void OnUpdatePrefix(CollectionBinderFlipAnimCtrl __instance, bool ___m_IsBookOpen) { Plugin.EnhancedBinderSort.OnCollectionBinderFlipAnimCtrlUpdate(__instance, ___m_IsBookOpen); } [HarmonyPatch("Update")] [HarmonyPostfix] private static void OnUpdatePostfix(CollectionBinderFlipAnimCtrl __instance) { Plugin.PutItBack.OnUpdate(__instance); } [HarmonyPatch("OnMouseButtonUp")] [HarmonyPrefix] public static bool OnMouseButtonUpPrefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.PutItBack.OnLeftMouseButtonUp(__instance); } [HarmonyPatch("OnRightMouseButtonUp")] [HarmonyPrefix] public static bool OnRightMouseButtonUpPrefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.PutItBack.OnRightMouseButtonUp(__instance); } [HarmonyPatch("StartShowCardAlbum")] [HarmonyPostfix] public static void StartShowCardAlbumPostfix(CollectionBinderFlipAnimCtrl __instance) { //IL_0006: 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) Plugin.EnhancedBinderSort.OnBinderOpen(__instance.GetSortingType(), __instance.GetExpansionType()); Plugin.Raycaster.OnBinderOpen(); } [HarmonyPatch("HideCardAlbum")] [HarmonyPostfix] public static void HideCardAlbumPostfix() { Plugin.Raycaster.OnBinderClose(); } } [HarmonyPatch(typeof(CollectionBinderUI))] public class CollectionBinderUIPatches { [HarmonyPatch("Awake")] [HarmonyPostfix] private static void OnUpdate(CollectionBinderUI __instance) { Plugin.EnhancedBinderSort.OnCollectionBinderUIAwake(__instance); } } [HarmonyPatch] public class MissingCardsCompatibilityPatch { private static PluginInfo m_PluginInfo; private static bool Prepare() { return Chainloader.PluginInfos.TryGetValue("MissingCards", out m_PluginInfo); } private static MethodBase TargetMethod() { return (from m in AccessTools.GetDeclaredMethods((from m in ((object)m_PluginInfo.Instance).GetType().GetNestedTypes(BindingFlags.NonPublic) where m.Name == "PatchSortBinder" select m).FirstOrDefault()) where m.Name == "Prefix" select m).Cast<MethodBase>().FirstOrDefault(); } [HarmonyPrefix] private static bool Prefix(out CollectionBinderUI __state) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Invalid comparison between Unknown and I4 //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 __state = Object.FindFirstObjectByType<CollectionBinderUI>(); if ((int)__state.m_CollectionAlbum.GetSortingType() == 7) { return (int)__state.m_CollectionAlbum.GetExpansionType() == 2; } return true; } [HarmonyPostfix] private static void Postfix(CollectionBinderUI __state, bool __runOriginal) { if (!__runOriginal && __state.m_CollectionAlbum.GetCanUpdateSort()) { __state.m_CollectionAlbum.SetCanUpdateSort(false); Plugin.EnhancedBinderSort.OnSort(__state.m_CollectionAlbum); } } } [HarmonyPatch] public class SortingPatch { private static IEnumerable<MethodBase> TargetMethods() { return (from method in AccessTools.GetDeclaredMethods(typeof(CollectionBinderFlipAnimCtrl)) where method.ReturnType == typeof(void) && method.Name.StartsWith("SortBy") select method).Cast<MethodBase>(); } private static bool Prefix(CollectionBinderFlipAnimCtrl __instance) { return Plugin.EnhancedBinderSort.OnSort(__instance); } } } namespace EnhancedQOL.Helpers { public class CollectedCardsUtility { public class Builder { private CollectedCardsUtility m_CardSorter = new CollectedCardsUtility(); public Builder WithSortType(ECollectionSortingType sortType) { //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) m_CardSorter.m_SortingType = sortType; return this; } public Builder WithExpansionType(ECardExpansionType expansionType) { //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) m_CardSorter.m_ExpansionType = expansionType; return this; } public Builder WithRarityType(ECardRaritySortType rarityType) { m_CardSorter.m_RarityType = rarityType; return this; } public Builder WithBorderType(ECardBorderSortType borderType) { m_CardSorter.m_BorderType = borderType; return this; } public Builder WithElementType(ECardElementSortType elementType) { m_CardSorter.m_ElementType = elementType; return this; } public Builder WithMinDupeCount(int minDupeCount) { m_CardSorter.m_MinDupeCount = minDupeCount; return this; } public CollectedCardsUtility Build() { return m_CardSorter; } } private int m_MinDupeCount; private ECollectionSortingType m_SortingType; private ECardExpansionType m_ExpansionType; private ECardRaritySortType m_RarityType; private ECardBorderSortType m_BorderType; private ECardElementSortType m_ElementType; public bool Sort(List<int> finalSortedCards) { //IL_0036: 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_020b: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Invalid comparison between Unknown and I4 //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Invalid comparison between Unknown and I4 //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Invalid comparison between Unknown and I4 //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Invalid comparison between Unknown and I4 finalSortedCards.Clear(); List<int> tempSortedCards = new List<int>(finalSortedCards.Capacity); int currentCardIndex = 0; foreach (EMonsterType shownMonster in InventoryBase.GetShownMonsterList(m_ExpansionType)) { MonsterData monsterData = InventoryBase.GetMonsterData(shownMonster); for (int i = 0; i < CPlayerData.GetCardAmountPerMonsterType(m_ExpansionType, true); i++) { CardData cardData = CPlayerData.GetCardData(currentCardIndex, m_ExpansionType, (int)m_ExpansionType == 1); int cardCount = CPlayerData.GetCardAmount(cardData); int cardPrice = 0; if ((int)m_SortingType == 5) { if (cardCount == m_MinDupeCount) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 1f); } else if (cardCount > m_MinDupeCount) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100000f); } } else if ((int)m_SortingType == 6) { cardPrice = cardCount * Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100f); } else if (cardCount > 0) { cardPrice = Mathf.RoundToInt(CPlayerData.GetCardMarketPrice(cardData) * 100f); } if (CardMatchesFilters(monsterData, cardData)) { ECollectionSortingType sortingType = m_SortingType; Action action = (((int)sortingType == 0) ? ((Action)delegate { finalSortedCards.Add(currentCardIndex); }) : (((int)sortingType == 1) ? ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddSortedDecending(cardCount), currentCardIndex); }) : (((int)sortingType != 7) ? ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddSortedDecending(cardPrice), currentCardIndex); }) : ((Action)delegate { finalSortedCards.Insert(tempSortedCards.AddAcending(cardCount), currentCardIndex); })))); action(); } int num = currentCardIndex; currentCardIndex = num + 1; } } return false; } public Tuple<int, int> GetCardCount() { //IL_0007: 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_0074: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Invalid comparison between Unknown and I4 int num = 0; int num2 = 0; int num3 = 0; foreach (EMonsterType shownMonster in InventoryBase.GetShownMonsterList(m_ExpansionType)) { MonsterData monsterData = InventoryBase.GetMonsterData(shownMonster); for (int i = 0; i < CPlayerData.GetCardAmountPerMonsterType(m_ExpansionType, true); i++) { CardData cardData = CPlayerData.GetCardData(num3, m_ExpansionType, (int)m_ExpansionType == 1); bool flag = CPlayerData.GetCardAmount(cardData) > 0; if (CardMatchesFilters(monsterData, cardData)) { num++; if (flag) { num2++; } } num3++; } } return Tuple.Create(num2, num); } private bool CardMatchesFilters(MonsterData monsterData, CardData cardData) { //IL_0012: 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_0042: 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_004f: Invalid comparison between Unknown and I4 //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Invalid comparison between Unknown and I4 //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Invalid comparison between Unknown and I4 int num = ((m_ElementType != ECardElementSortType.None) ? ((int)m_ElementType) : ((int)monsterData.ElementIndex)); int num2 = ((m_RarityType != ECardRaritySortType.None) ? ((int)m_RarityType) : ((int)monsterData.Rarity)); int num3 = ((m_BorderType != ECardBorderSortType.None) ? ((int)m_BorderType) : ((int)cardData.GetCardBorderType())); if ((int)monsterData.ElementIndex == num && (int)monsterData.Rarity == num2) { return (int)cardData.GetCardBorderType() == num3; } return false; } private CollectedCardsUtility() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) m_SortingType = (ECollectionSortingType)0; m_ExpansionType = (ECardExpansionType)0; m_BorderType = ECardBorderSortType.None; m_ElementType = ECardElementSortType.None; m_RarityType = ECardRaritySortType.None; m_MinDupeCount = 1; } } public class HeldCardData { public int BinderPageIndex { get; set; } public int BinderCardSlotIndex { get; set; } public CardData CardData { get; set; } public Transform Transform { get; set; } } public class ReverseComparer<T> : Comparer<T> { public override int Compare(T x, T y) { return Comparer<T>.Default.Compare(y, x); } } public class SceneRaycaster : MonoBehaviour { private List<Type> m_ItemCompartmentTypeList = new List<Type>(); private bool m_IsInitialized; public Component RaycastedComponent { get; private set; } private void Awake() { m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { m_ItemCompartmentTypeList.Add(typeof(InteractableCard3d)); m_ItemCompartmentTypeList.Add(typeof(CardShelf)); m_ItemCompartmentTypeList.Add(typeof(InteractableCardCompartment)); m_ItemCompartmentTypeList.Add(typeof(InteractablePackagingBox_Item)); m_ItemCompartmentTypeList.Add(typeof(ShelfCompartment)); m_ItemCompartmentTypeList.Add(typeof(InteractableTrashBin)); m_ItemCompartmentTypeList.Add(typeof(InteractableWorkbench)); m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_ItemCompartmentTypeList.Clear(); RaycastedComponent = null; } } private void FixedUpdate() { //IL_001a: 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_005c: Unknown result type (might be due to invalid IL or missing references) Camera val = CSingleton<InteractionPlayerController>.Instance?.m_Cam; Ray val2 = default(Ray); ((Ray)(ref val2))..ctor(((Component)val).transform.position, ((Component)val).transform.forward); int mask = LayerMask.GetMask(new string[4] { "UI", "Physics", "ItemCompartment", "ShopModel" }); RaycastHit val3 = default(RaycastHit); RaycastedComponent = (Physics.Raycast(val2, ref val3, CSingleton<InteractionPlayerController>.Instance.m_RayDistance, mask) ? (from component in ((Component)((RaycastHit)(ref val3)).transform).gameObject.GetComponents<Component>() where m_ItemCompartmentTypeList.Contains(((object)component).GetType()) select component).FirstOrDefault() : null); } public void OnBinderOpen() { RaycastedComponent = null; ((Behaviour)this).enabled = false; } public void OnBinderClose() { ((Behaviour)this).enabled = true; } } } namespace EnhancedQOL.Extensions { public static class CardDataExt { public static bool IsOwned(this CardData cardData) { return CPlayerData.GetCardAmount(cardData) > 0; } public static CardData CopyFrom(this CardData target, CardData source) { //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_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_0032: 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) target.monsterType = source.monsterType; target.isFoil = source.isFoil; target.borderType = source.borderType; target.isDestiny = source.isDestiny; target.expansionType = source.expansionType; return target; } } public static class CollectionBinderFlipAnimCtrlExt { public static ECollectionSortingType GetSortingType(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) return (ECollectionSortingType)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortingType").GetValue(collectionBinderFlipAnimCtrl); } public static int GetCurrentBinderPageIndex(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (int)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_Index").GetValue(collectionBinderFlipAnimCtrl); } public static ECardExpansionType GetExpansionType(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) return (ECardExpansionType)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_ExpansionType").GetValue(collectionBinderFlipAnimCtrl); } public static bool GetCanUpdateSort(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (bool)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_CanUpdateSort").GetValue(collectionBinderFlipAnimCtrl); } public static List<int> GetSortedCardList(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (List<int>)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortedIndexList").GetValue(collectionBinderFlipAnimCtrl); } public static List<int> GetTempSortedList(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (List<int>)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_SortTempList").GetValue(collectionBinderFlipAnimCtrl); } public static bool IsBookOpen(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (bool)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_IsBookOpen").GetValue(collectionBinderFlipAnimCtrl); } public static int GetRaycastedCardIndex(this CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { return (int)AccessTools.Field(typeof(CollectionBinderFlipAnimCtrl), "m_CurrentRaycastedCardIndex").GetValue(collectionBinderFlipAnimCtrl); } } public static class EnumExt { public static T Next<T>(this T src) where T : struct { if (!typeof(T).IsEnum) { throw new ArgumentException("Argument " + typeof(T).FullName + " is not an Enum"); } T[] array = (T[])Enum.GetValues(src.GetType()); int num = Array.IndexOf(array, src) + 1; if (array.Length != num) { return array[num]; } return array[0]; } } public static class InteractionPlayerControllerExt { public static List<InteractableCard3d> GetHeldCards(this InteractionPlayerController playerController) { return (List<InteractableCard3d>)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentHoldingCard3dList").GetValue(playerController); } public static void SetHoldCardGroupTargetRotation(this InteractionPlayerController playerController, Quaternion value) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) AccessTools.Field(typeof(InteractionPlayerController), "m_HoldCardGrpTargetRotation").SetValue(playerController, value); } public static ShelfCompartment GetRaycastedItemCompartment(this InteractionPlayerController playerController) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown return (ShelfCompartment)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentItemCompartment").GetValue(playerController); } public static InteractablePackagingBox_Item GetCurrentHeldBox(this InteractionPlayerController playerController) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown return (InteractablePackagingBox_Item)AccessTools.Field(typeof(InteractionPlayerController), "m_CurrentHoldingItemBox").GetValue(playerController); } public static List<Item> GetHeldItemList(this InteractionPlayerController playerController) { return (List<Item>)AccessTools.Field(typeof(InteractionPlayerController), "m_HoldItemList").GetValue(playerController); } public static void PutItemOnShelf(this InteractionPlayerController playerController) { AccessTools.Method(typeof(InteractionPlayerController), "EvaluatePutItemOnShelf", (Type[])null, (Type[])null).Invoke(playerController, null); } public static void TakeItemFromShelf(this InteractionPlayerController playerController) { AccessTools.Method(typeof(InteractionPlayerController), "EvaluateTakeItemFromShelf", (Type[])null, (Type[])null).Invoke(playerController, null); } } public static class ListExt { public static int AddSortedDecending<T>(this List<T> list, T item) where T : IComparable<T> { ReverseComparer<T> reverseComparer = new ReverseComparer<T>(); if (list.Count == 0 || reverseComparer.Compare(list[list.Count - 1], item) <= 0) { list.Add(item); return list.Count - 1; } if (reverseComparer.Compare(list[0], item) >= 0) { list.Insert(0, item); return 0; } int num = list.BinarySearch(item, reverseComparer); if (num < 0) { num = ~num; } list.Insert(num, item); return num; } public static int AddAcending<T>(this List<T> list, T item) where T : IComparable<T> { if (list.Count == 0 || list[list.Count - 1].CompareTo(item) <= 0) { list.Add(item); return list.Count - 1; } if (list[0].CompareTo(item) >= 0) { list.Insert(0, item); return 0; } int num = list.BinarySearch(item); if (num < 0) { num = ~num; } list.Insert(num, item); return num; } } public static class StringExt { public static string AppendIf(this string value, bool expression, string append) { if (!expression) { return value; } return value + append; } } public static class TextMeshProUGUIExt { public static TextMeshProUGUI CopyFrom(this TextMeshProUGUI source, TextMeshProUGUI target) { //IL_0050: 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_0068: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)source).font = ((target != null) ? ((TMP_Text)target).font : null); ((TMP_Text)source).fontSharedMaterial = ((target != null) ? ((TMP_Text)target).fontSharedMaterial : null); ((TMP_Text)source).fontMaterial = ((target != null) ? ((TMP_Text)target).fontMaterial : null); ((TMP_Text)source).outlineWidth = ((TMP_Text)target).outlineWidth; ((TMP_Text)source).fontSize = ((TMP_Text)target).fontSize; ((TMP_Text)source).horizontalAlignment = ((TMP_Text)target).horizontalAlignment; ((TMP_Text)source).verticalAlignment = ((TMP_Text)target).verticalAlignment; ((TMP_Text)source).alignment = ((TMP_Text)target).alignment; ((TMP_Text)source).richText = ((TMP_Text)target).richText; ((TMP_Text)source).vertexBufferAutoSizeReduction = ((TMP_Text)target).vertexBufferAutoSizeReduction; ((TMP_Text)source).extraPadding = ((TMP_Text)target).extraPadding; return source; } } } namespace EnhancedQOL.Binder { public enum ECardBorderSortType { None = -1, Base, FirstEdition, Silver, Gold, Ex, FullArt } public enum ECardCountDisplayType { None = -1, CurrentRarityFiler, CurrentFilters, AllRarity } public enum ECardElementSortType { None = -1, Fire, Earth, Water, Wind } public enum ECardRaritySortType { None = -1, Common, Rare, Epic, Legendary } public class EnhancedBinderSort : MonoBehaviour { private int m_MinDupeCount; private ECardRaritySortType m_RaritySortingType = ECardRaritySortType.None; private ECardElementSortType m_ElementSortingType = ECardElementSortType.None; private ECardBorderSortType m_BorderSortingType = ECardBorderSortType.None; private KeyboardShortcut m_RaritySortFilterToggleShortcut; private KeyboardShortcut m_BorderSortFilterToggleShortcut; private KeyboardShortcut m_ElementSortFilterToggleShortcut; private KeyboardShortcut m_RaritySortFilterClearShortcut; private KeyboardShortcut m_BorderSortFilterClearShortcut; private KeyboardShortcut m_ElementSortFilterClearShortcut; private KeyboardShortcut m_AllSortFilterClearShortcut; public EnhancedBinderUIManager EnhancedBinderUIManager { get; private set; } private void Awake() { //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_0035: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) m_MinDupeCount = Settings.Instance.minDupeCount.Value; m_RaritySortFilterToggleShortcut = Settings.Instance.raritySortFilterToggle.Value; m_BorderSortFilterToggleShortcut = Settings.Instance.borderSortFilterToggle.Value; m_ElementSortFilterToggleShortcut = Settings.Instance.elementSortFilterToggle.Value; m_RaritySortFilterClearShortcut = Settings.Instance.raritySortFilterClear.Value; m_BorderSortFilterClearShortcut = Settings.Instance.borderSortFilterClear.Value; m_ElementSortFilterClearShortcut = Settings.Instance.elementSortFilterClear.Value; m_AllSortFilterClearShortcut = Settings.Instance.allFilterClear.Value; Settings.Instance.isEnhancedBinderSortEnabled.SettingChanged += delegate { ((Behaviour)this).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; if (EnhancedBinderUIManager != null) { ((Behaviour)EnhancedBinderUIManager).enabled = Settings.Instance.isEnhancedBinderSortEnabled.Value; } if (!Settings.Instance.isEnhancedQOLEnabled.Value && ((Behaviour)this).enabled) { Settings.Instance.isEnhancedQOLEnabled.Value = true; } }; Settings.Instance.minDupeCount.SettingChanged += delegate { m_MinDupeCount = Settings.Instance.minDupeCount.Value; }; Settings.Instance.raritySortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_RaritySortFilterToggleShortcut = Settings.Instance.raritySortFilterToggle.Value; }; Settings.Instance.borderSortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_BorderSortFilterToggleShortcut = Settings.Instance.borderSortFilterToggle.Value; }; Settings.Instance.elementSortFilterToggle.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_ElementSortFilterToggleShortcut = Settings.Instance.elementSortFilterToggle.Value; }; Settings.Instance.raritySortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_RaritySortFilterClearShortcut = Settings.Instance.raritySortFilterClear.Value; }; Settings.Instance.borderSortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_BorderSortFilterClearShortcut = Settings.Instance.borderSortFilterClear.Value; }; Settings.Instance.elementSortFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_ElementSortFilterClearShortcut = Settings.Instance.elementSortFilterClear.Value; }; Settings.Instance.allFilterClear.SettingChanged += delegate { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) m_AllSortFilterClearShortcut = Settings.Instance.allFilterClear.Value; }; } public void OnEnable() { if (EnhancedBinderUIManager != null) { ((Behaviour)EnhancedBinderUIManager).enabled = true; } if (EnhancedBinderUIManager == null) { EnhancedBinderUIManager enhancedBinderUIManager2 = (EnhancedBinderUIManager = ((Component)this).gameObject.AddComponent<EnhancedBinderUIManager>()); } } public void OnDisable() { if (EnhancedBinderUIManager != null) { Plugin.Logger.LogError((object)(EnhancedBinderUIManager == null)); ((Behaviour)EnhancedBinderUIManager).enabled = false; } } public void OnCollectionBinderUIAwake(CollectionBinderUI instance) { ((Behaviour)EnhancedBinderUIManager).enabled = true; } public void OnCollectionBinderFlipAnimCtrlUpdate(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl, bool isAlbumOpen) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Invalid comparison between Unknown and I4 //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected I4, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected I4, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected I4, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected I4, but got Unknown //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected I4, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected I4, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Expected I4, but got Unknown if (!((Behaviour)this).enabled || !isAlbumOpen || (int)collectionBinderFlipAnimCtrl.GetExpansionType() == 2 || (int)collectionBinderFlipAnimCtrl.GetSortingType() == 3) { return; } if (CSingleton<InteractionPlayerController>.Instance.GetHeldCards().Count <= 0) { if (((KeyboardShortcut)(ref m_RaritySortFilterToggleShortcut)).IsDown()) { m_RaritySortingType = m_RaritySortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_BorderSortFilterToggleShortcut)).IsDown()) { m_BorderSortingType = m_BorderSortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_ElementSortFilterToggleShortcut)).IsDown()) { m_ElementSortingType = m_ElementSortingType.Next(); collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_AllSortFilterClearShortcut)).IsDown()) { m_RaritySortingType = ECardRaritySortType.None; m_BorderSortingType = ECardBorderSortType.None; m_ElementSortingType = ECardElementSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_BorderSortFilterClearShortcut)).IsDown()) { m_BorderSortingType = ECardBorderSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_ElementSortFilterClearShortcut)).IsDown()) { m_ElementSortingType = ECardElementSortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } else if (((KeyboardShortcut)(ref m_RaritySortFilterClearShortcut)).IsDown()) { m_RaritySortingType = ECardRaritySortType.None; collectionBinderFlipAnimCtrl.OnPressSwitchSortingMethod((int)collectionBinderFlipAnimCtrl.GetSortingType()); } } EnhancedBinderUIManager?.OnUpdate(m_RaritySortingType, m_BorderSortingType, m_ElementSortingType); } public bool OnSort(CollectionBinderFlipAnimCtrl collectionBinderFlipAnimCtrl) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Invalid comparison between Unknown and I4 //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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 bool flag = !((Behaviour)this).enabled || (int)collectionBinderFlipAnimCtrl.GetExpansionType() == 2; if (!flag) { ECollectionSortingType sortingType = collectionBinderFlipAnimCtrl.GetSortingType(); Func<bool> func = (((int)sortingType == 3) ? ((Func<bool>)(() => true)) : (((int)sortingType != 4) ? ((Func<bool>)delegate { //IL_001d: 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) List<int> sortedCardList = collectionBinderFlipAnimCtrl.GetSortedCardList(); new List<int>(); return new CollectedCardsUtility.Builder().WithSortType(collectionBinderFlipAnimCtrl.GetSortingType()).WithExpansionType(collectionBinderFlipAnimCtrl.GetExpansionType()).WithRarityType(m_RaritySortingType) .WithElementType(m_ElementSortingType) .WithBorderType(m_BorderSortingType) .WithMinDupeCount(m_MinDupeCount) .Build() .Sort(sortedCardList); }) : ((Func<bool>)(() => true)))); flag = func(); } return flag; } public void OnBinderOpen(ECollectionSortingType sortingType, ECardExpansionType expansionType) { //IL_0013: 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) if (((Behaviour)this).enabled) { EnhancedBinderUIManager?.OnCollectionBinderOpen(sortingType, expansionType, m_RaritySortingType, m_BorderSortingType, m_ElementSortingType); } } } public class EnhancedBinderUIManager : MonoBehaviour { private bool m_IsInitialized; private GameObject m_ScreenGrp; private TextMeshProUGUI m_CardsCollectedText; private TextMeshProUGUI m_TotalCollectionCountText; private TextMeshProUGUI m_RareCollectionCountText; private TextMeshProUGUI m_EpicCollectionCountText; private TextMeshProUGUI m_LegendaryCollectionCountText; private List<Tuple<int, int>> m_CardCounts = new List<Tuple<int, int>>(); private ECardCountDisplayType m_CardCountDisplayType; private void Awake() { Settings.Instance.cardCountDisplayType.SettingChanged += delegate { m_CardCountDisplayType = Settings.Instance.cardCountDisplayType.Value; if (m_IsInitialized) { if (Settings.Instance.cardCountDisplayType.Value == ECardCountDisplayType.AllRarity) { ((Behaviour)m_RareCollectionCountText).enabled = true; ((Behaviour)m_EpicCollectionCountText).enabled = true; ((Behaviour)m_LegendaryCollectionCountText).enabled = true; } else { ((Behaviour)m_RareCollectionCountText).enabled = false; ((Behaviour)m_EpicCollectionCountText).enabled = false; ((Behaviour)m_LegendaryCollectionCountText).enabled = false; } } }; Settings.Instance.commonCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_TotalCollectionCountText).transform.localPosition = Settings.Instance.commonCardCountPosition.Value; }; Settings.Instance.commonCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_TotalCollectionCountText).fontSize = Settings.Instance.commonCardCountFontSize.Value; }; Settings.Instance.rareCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_RareCollectionCountText).transform.localPosition = Settings.Instance.rareCardCountPosition.Value; }; Settings.Instance.rareCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_RareCollectionCountText).fontSize = Settings.Instance.rareCardCountFontSize.Value; }; Settings.Instance.epicCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_EpicCollectionCountText).transform.localPosition = Settings.Instance.epicCardCountPosition.Value; }; Settings.Instance.epicCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_EpicCollectionCountText).fontSize = Settings.Instance.epicCardCountFontSize.Value; }; Settings.Instance.legendaryCardCountPosition.SettingChanged += delegate { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)m_LegendaryCollectionCountText).transform.localPosition = Settings.Instance.legendaryCardCountPosition.Value; }; Settings.Instance.legendaryCardCountFontSize.SettingChanged += delegate { ((TMP_Text)m_LegendaryCollectionCountText).fontSize = Settings.Instance.legendaryCardCountFontSize.Value; }; m_IsInitialized = false; ((Behaviour)this).enabled = false; } private void OnEnable() { //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_018a: 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_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_0318: 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_02aa: Unknown result type (might be due to invalid IL or missing references) if (!m_IsInitialized) { CollectionBinderUI val = Object.FindFirstObjectByType<CollectionBinderUI>(); if (val != null) { m_ScreenGrp = val.m_ScreenGrp; if (m_CardsCollectedText == null) { m_CardsCollectedText = ((Component)m_ScreenGrp.transform.Find("AnimGrp/CardCollectedText")).GetComponent<TextMeshProUGUI>(); } ((TMP_Text)m_CardsCollectedText).enableAutoSizing = false; ((TMP_Text)m_CardsCollectedText).fontSize = 30f; ((TMP_Text)m_CardsCollectedText).rectTransform.sizeDelta = new Vector2(800f, 100f); if (m_TotalCollectionCountText == null) { m_TotalCollectionCountText = ((Component)m_ScreenGrp.transform.Find("AnimGrp/CardCollected")).GetComponent<TextMeshProUGUI>(); } ((TMP_Text)m_TotalCollectionCountText).transform.localPosition = Settings.Instance.commonCardCountPosition.Value; ((TMP_Text)m_TotalCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_TotalCollectionCountText).fontSize = Settings.Instance.commonCardCountFontSize.Value; ((TMP_Text)m_TotalCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 100f); if (m_RareCollectionCountText == null) { m_RareCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_RareCollectionCountText).gameObject).name = "RareCount"; ((TMP_Text)m_RareCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_RareCollectionCountText).transform.localPosition = Settings.Instance.rareCardCountPosition.Value; ((TMP_Text)m_RareCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_RareCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_RareCollectionCountText).fontSize = Settings.Instance.rareCardCountFontSize.Value; if (m_EpicCollectionCountText == null) { m_EpicCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_EpicCollectionCountText).gameObject).name = "EpicCount"; ((TMP_Text)m_EpicCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_EpicCollectionCountText).transform.localPosition = Settings.Instance.epicCardCountPosition.Value; ((TMP_Text)m_EpicCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_EpicCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_EpicCollectionCountText).fontSize = Settings.Instance.epicCardCountFontSize.Value; if (m_LegendaryCollectionCountText == null) { m_LegendaryCollectionCountText = new GameObject().AddComponent<TextMeshProUGUI>().CopyFrom(m_TotalCollectionCountText); } ((Object)((Component)m_LegendaryCollectionCountText).gameObject).name = "LegendCount"; ((TMP_Text)m_LegendaryCollectionCountText).transform.SetParent(((Component)m_ScreenGrp.transform.Find("AnimGrp")).transform); ((TMP_Text)m_LegendaryCollectionCountText).transform.localPosition = Settings.Instance.legendaryCardCountPosition.Value; ((TMP_Text)m_LegendaryCollectionCountText).rectTransform.sizeDelta = new Vector2(800f, 20f); ((TMP_Text)m_LegendaryCollectionCountText).enableAutoSizing = false; ((TMP_Text)m_LegendaryCollectionCountText).fontSize = Settings.Instance.legendaryCardCountFontSize.Value; m_CardCountDisplayType = Settings.Instance.cardCountDisplayType.Value; } } m_IsInitialized = true; } private void OnDisable() { if (m_IsInitialized) { m_ScreenGrp = null; if (m_CardsCollectedText != null) { ((TMP_Text)m_CardsCollectedText).enableAutoSizing = true; m_CardsCollectedText = null; } if (m_TotalCollectionCountText != null) { ((TMP_Text)m_TotalCollectionCountText).enableAutoSizing = true; m_TotalCollectionCountText = null; } if (m_RareCollectionCountText != null) { Object.Destroy((Object)(object)m_RareCollectionCountText); m_RareCollectionCountText = null; } if (m_EpicCollectionCountText != null) { Object.Destroy((Object)(object)m_EpicCollectionCountText); m_EpicCollectionCountText = null; } if (m_LegendaryCollectionCountText != null) { Object.Destroy((Object)(object)m_LegendaryCollectionCountText); m_LegendaryCollectionCountText = null; } m_IsInitialized = false; } } public void OnUpdate(ECardRaritySortType raritySortingType, ECardBorderSortType borderSortingType, ECardElementSortType elementSortingType) { if (((Behaviour)this).enabled) { string text = "Cards Collected".AppendIf(raritySortingType != ECardRaritySortType.None, $" [{raritySortingType}]").AppendIf(borderSortingType != ECardBorderSortType.None, $" [{borderSortingType}]").AppendIf(elementSortingType != ECardElementSortType.None, $" [{elementSortingType}]"); ((TMP_Text)m_CardsCollectedText).SetText(text, true); if (m_CardCountDisplayType == ECardCountDisplayType.AllRarity) { ((TMP_Text)m_TotalCollectionCountText).SetText($"Common: {m_CardCounts[0].Item1}/{m_CardCounts[0].Item2} ({Math.Round((float)m_CardCounts[0].Item1 / (float)m_CardCounts[0].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_RareCollectionCountText).SetText($"Rare: {m_CardCounts[1].Item1}/{m_CardCounts[1].Item2} ({Math.Round((float)m_CardCounts[1].Item1 / (float)m_CardCounts[1].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_EpicCollectionCountText).SetText($"Epic: {m_CardCounts[2].Item1}/{m_CardCounts[2].Item2} ({Math.Round((float)m_CardCounts[2].Item1 / (float)m_CardCounts[2].Item2 * 100f, 1)}%)", true); ((TMP_Text)m_LegendaryCollectionCountText).SetText($"Legendary: {m_CardCounts[3].Item1}/{m_CardCounts[3].Item2} ({Math.Round((float)m_CardCounts[3].Item1 / (float)m_CardCounts[3].Item2 * 100f, 1)}%)", true); } else { ((TMP_Text)m_TotalCollectionCountText).SetText($"Common: {m_CardCounts[0].Item1}/{m_CardCounts[0].Item2} ({Math.Round((float)m_CardCounts[0].Item1 / (float)m_CardCounts[0].Item2 * 100f, 1)}%)", true); } } } public void OnCollectionBinderOpen(ECollectionSortingType sortingType, ECardExpansionType expansionType, ECardRaritySortType raritySortingType, ECardBorderSortType borderSortingType, ECardElementSortType elementSortingType) { //IL_003a: 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_00a4: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0133: 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_015f: Unknown result type (might be due to invalid IL or missing references) m_CardCounts.Clear(); switch (m_CardCountDisplayType) { case ECardCountDisplayType.None: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).Build() .GetCardCount()); break; case ECardCountDisplayType.CurrentFilters: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(raritySortingType) .WithBorderType(borderSortingType) .WithElementType(elementSortingType) .Build() .GetCardCount()); break; case ECardCountDisplayType.CurrentRarityFiler: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(raritySortingType) .Build() .GetCardCount()); break; case ECardCountDisplayType.AllRarity: m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Common) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Rare) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Epic) .Build() .GetCardCount()); m_CardCounts.Add(new CollectedCardsUtility.Builder().WithSortType(sortingType).WithExpansionType(expansionType).WithRarityType(ECardRaritySortType.Legendary) .Build() .GetCardCount()); break; } while (m_CardCounts.Count != 4) { m_CardCounts.Add(new Tuple<int, int>(1, 1)); } } } }