diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs index 88d920f761..a36210c880 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_InventoryUI.cs @@ -28,6 +28,8 @@ namespace BrewMonster.Scripts.Managers [SerializeField] private TextOutlet nameText; [SerializeField] private TextOutlet descriptionText; [SerializeField] private TextOutlet extendedDescText; + [SerializeField] private Button equipButton; + [SerializeField] private Button dropButton; [Header("Inventory Settings")] [SerializeField] private bool autoRefresh = true; @@ -664,11 +666,20 @@ namespace BrewMonster.Scripts.Managers } } + public void RefreshLayout(GameObject gameObject) + { + var parent = gameObject.GetComponent(); + + // Force Unity to rebuild layout immediately + parent.ForceUpdateRectTransforms(); + LayoutRebuilder.ForceRebuildLayoutImmediate(parent); + } private void ShowDetailPanel(bool show) { if (detailPanelRoot != null) { detailPanelRoot.SetActive(show); + RefreshLayout(detailPanelRoot); } } @@ -822,8 +833,102 @@ namespace BrewMonster.Scripts.Managers extendedDescText?.Set(itemExtendedDesc ?? ""); } + // Setup equip and drop buttons + SetupEquipButton(package, item); + SetupDropButton(package, item); + ShowDetailPanel(true); } + + private void SetupEquipButton(byte package, EC_IvtrItem item) + { + if (equipButton == null) return; + + // Clear previous listeners + equipButton.onClick.RemoveAllListeners(); + equipButton.onClick.AddListener(OnEquipButtonClicked); + + // Set button text and visibility based on package + var buttonText = equipButton.GetComponentInChildren(); + if (buttonText == null) + { + var tmpText = equipButton.GetComponentInChildren(); + if (tmpText != null) + { + if (package == PKG_INVENTORY) + { + tmpText.text = "Equip"; + equipButton.gameObject.SetActive(true); + } + else if (package == PKG_EQUIPMENT) + { + tmpText.text = "UnEquip"; + equipButton.gameObject.SetActive(true); + } + else + { + equipButton.gameObject.SetActive(false); + } + } + } + else + { + if (package == PKG_INVENTORY) + { + buttonText.text = "Equip"; + equipButton.gameObject.SetActive(true); + } + else if (package == PKG_EQUIPMENT) + { + buttonText.text = "UnEquip"; + equipButton.gameObject.SetActive(true); + } + else + { + equipButton.gameObject.SetActive(false); + } + } + } + + private void SetupDropButton(byte package, EC_IvtrItem item) + { + if (dropButton == null) return; + + // Clear previous listeners + dropButton.onClick.RemoveAllListeners(); + dropButton.onClick.AddListener(OnDropButtonClicked); + + // Set button text and visibility based on package + var buttonText = dropButton.GetComponentInChildren(); + if (buttonText == null) + { + var tmpText = dropButton.GetComponentInChildren(); + if (tmpText != null) + { + if (package == PKG_INVENTORY || package == PKG_EQUIPMENT) + { + tmpText.text = "Drop"; + dropButton.gameObject.SetActive(true); + } + else + { + dropButton.gameObject.SetActive(false); + } + } + } + else + { + if (package == PKG_INVENTORY || package == PKG_EQUIPMENT) + { + buttonText.text = "Drop"; + dropButton.gameObject.SetActive(true); + } + else + { + dropButton.gameObject.SetActive(false); + } + } + } }