diff --git a/Patches/GridWindowButtonsPatch.cs b/Patches/GridWindowButtonsPatch.cs index c34173a..8e62e80 100644 --- a/Patches/GridWindowButtonsPatch.cs +++ b/Patches/GridWindowButtonsPatch.cs @@ -18,7 +18,8 @@ namespace UIFixes [PatchPostfix] public static void Postfix(GridWindow __instance) { - if (Settings.AddContainerButtons.Value) + var wrappedInstance = __instance.R(); + if (Settings.AddContainerButtons.Value && wrappedInstance.LootItem.Int32_0 > 2) // Greater than 2 cells wide { Transform closeButton = __instance.transform.Find("Caption Panel/Close Button"); Image sortBackground = __instance.transform.Find("Caption Panel/Sort Button")?.GetComponent(); @@ -26,13 +27,13 @@ namespace UIFixes // Left button Button leftButton = CreateButton(closeButton, sortBackground.sprite, EItemAttributeId.RecoilBack); leftButton.onClick.AddListener(() => SnapLeft(__instance)); - __instance.R().UI.AddDisposable(() => leftButton.onClick.RemoveAllListeners()); + wrappedInstance.UI.AddDisposable(() => leftButton.onClick.RemoveAllListeners()); // Right button Button rightButton = CreateButton(closeButton, sortBackground.sprite, EItemAttributeId.RecoilBack); rightButton.transform.Find("X").Rotate(0f, 180f, 0f); rightButton.onClick.AddListener(() => SnapRight(__instance)); - __instance.R().UI.AddDisposable(() => rightButton.onClick.RemoveAllListeners()); + wrappedInstance.UI.AddDisposable(() => rightButton.onClick.RemoveAllListeners()); // Put close back on the end closeButton.SetAsLastSibling(); diff --git a/R.cs b/R.cs index 6e8ac72..1283137 100644 --- a/R.cs +++ b/R.cs @@ -561,14 +561,17 @@ namespace UIFixes { public static Type Type { get; private set; } private static FieldInfo GridSortPanelField; + private static FieldInfo LootItemField; public static void InitTypes() { Type = typeof(EFT.UI.GridWindow); GridSortPanelField = AccessTools.Field(Type, "_sortPanel"); + LootItemField = AccessTools.GetDeclaredFields(Type).Single(f => f.FieldType == typeof(LootItemClass)); } public EFT.UI.DragAndDrop.GridSortPanel GridSortPanel { get { return (EFT.UI.DragAndDrop.GridSortPanel)GridSortPanelField.GetValue(Value); } } + public LootItemClass LootItem { get { return (LootItemClass)LootItemField.GetValue(Value); } } } public class GridSortPanel(object value) : Wrapper(value)