Add button and correct refresh detail item pannel size

This commit is contained in:
HungDK
2025-12-08 10:26:44 +07:00
parent 421bcfd6a6
commit 729bd4ce6e
@@ -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<RectTransform>();
// 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<UnityEngine.UI.Text>();
if (buttonText == null)
{
var tmpText = equipButton.GetComponentInChildren<TMPro.TextMeshProUGUI>();
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<UnityEngine.UI.Text>();
if (buttonText == null)
{
var tmpText = dropButton.GetComponentInChildren<TMPro.TextMeshProUGUI>();
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);
}
}
}
}