using Comfort.Common; using EFT.UI; using HarmonyLib; using SPT.Reflection.Patching; using System.Linq; using System.Reflection; using UnityEngine; namespace UIFixes { public class OpenSortingTablePatch : ModulePatch { private static readonly EItemUiContextType[] AllowedScreens = [EItemUiContextType.InventoryScreen, EItemUiContextType.ScavengerInventoryScreen]; protected override MethodBase GetTargetMethod() { return AccessTools.Method(typeof(ItemUiContext), nameof(ItemUiContext.QuickMoveToSortingTable)); } [PatchPrefix] public static void Prefix(ItemUiContext __instance) { if (!Settings.AutoOpenSortingTable.Value || !AllowedScreens.Contains(__instance.ContextType) || Plugin.InRaid()) { return; } // Temporary work-around for LootValue bug - bail out if the ALT key is down if (Input.GetKey(KeyCode.LeftAlt)) { return; } SortingTableClass sortingTable = __instance.R().InventoryController.Inventory.SortingTable; if (sortingTable != null && !sortingTable.IsVisible) { if (__instance.ContextType == EItemUiContextType.InventoryScreen) { Singleton.Instance.InventoryScreen.method_6(); Singleton.Instance.InventoryScreen.R().SimpleStashPanel.ChangeSortingTableTabState(true); } else if (__instance.ContextType == EItemUiContextType.ScavengerInventoryScreen) { Singleton.Instance.ScavengerInventoryScreen.method_7(); Singleton.Instance.ScavengerInventoryScreen.R().SimpleStashPanel.ChangeSortingTableTabState(true); } } } } }