using Comfort.Common; using EFT.UI; using HarmonyLib; using SPT.Reflection.Patching; using System.Reflection; using UnityEngine; namespace UIFixes; public static class MoveSortingTablePatches { private static Transform SelectedBackground; public static void Enable() { new ButtonsPatch().Enable(); new ToggleBackgroundPatch().Enable(); } public class ButtonsPatch : ModulePatch { private static Tab OldSortingTableTab; protected override MethodBase GetTargetMethod() { return AccessTools.Method(typeof(SimpleStashPanel), nameof(SimpleStashPanel.Show)); } [PatchPostfix] public static void Postfix(SimpleStashPanel __instance, ItemUiContext ___itemUiContext_0, Tab ____sortingTableTab, LootItemClass ___lootItemClass) { if (Settings.SortingTableButton.Value == SortingTableDisplay.New || ____sortingTableTab == null || ___itemUiContext_0.ContextType != EItemUiContextType.InventoryScreen) { return; } if (___lootItemClass.Parent.GetOwner() is not InventoryControllerClass inventoryController) { return; } if (OldSortingTableTab == null) { Transform scavScreenSortingTableButton = Singleton.Instance.transform.Find("Common UI/Scavenger Inventory Screen/Items Panel/Stash Panel/Simple Panel/Sorting Panel/SortTableButton"); OldSortingTableTab = UnityEngine.Object.Instantiate(scavScreenSortingTableButton.GetComponent(), ____sortingTableTab.transform.parent, false); OldSortingTableTab.transform.SetAsFirstSibling(); OldSortingTableTab.OnSelectionChanged += __instance.method_1; SelectedBackground = OldSortingTableTab.transform.Find("Selected"); if (!inventoryController.SortingTableActive) { SelectedBackground.gameObject.SetActive(false); } __instance.R().UI.AddDisposable(() => { OldSortingTableTab.OnSelectionChanged -= __instance.method_1; UnityEngine.Object.Destroy(OldSortingTableTab.gameObject); OldSortingTableTab = null; SelectedBackground = null; }); } OldSortingTableTab.gameObject.SetActive(____sortingTableTab.isActiveAndEnabled); if (Settings.SortingTableButton.Value == SortingTableDisplay.Old) { ____sortingTableTab.gameObject.SetActive(false); } } } public class ToggleBackgroundPatch : ModulePatch { protected override MethodBase GetTargetMethod() { return AccessTools.Method(typeof(SimpleStashPanel), nameof(SimpleStashPanel.ChangeSortingTableTabState)); } [PatchPostfix] public static void Postfix(bool isVisible) { if (SelectedBackground?.gameObject != null) { SelectedBackground.gameObject.SetActive(isVisible); } } } }