From b55bc192f403826120d4721630934f27e028edba Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Mon, 31 Mar 2025 18:21:39 +0000 Subject: [PATCH] #28 added inventory description UI scrollbar --- Assets/Scripts/Inventory/InventoryDisplay.cs | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 64 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/Inventory/InventoryDisplay.cs b/Assets/Scripts/Inventory/InventoryDisplay.cs index a5ed7cf..dfd4f32 100644 --- a/Assets/Scripts/Inventory/InventoryDisplay.cs +++ b/Assets/Scripts/Inventory/InventoryDisplay.cs @@ -16,6 +16,7 @@ public GameObject itemUIPrefab; public GameObject itemNameDescription; public GameObject itemDescription; + public GameObject itemDeleteButton; public List<GameObject> itemUIs = new List<GameObject>(); @@ -151,15 +152,73 @@ //} if (itemNameDescription.GetComponent<ItemUIScript>()?.InventorySlot?.item?.itemName == inventorySlot.item.itemName) { - itemDescription.SetActive(!itemNameDescription.activeSelf); + itemDescription.transform.parent.parent.parent.gameObject.SetActive(!itemNameDescription.activeSelf); + itemDeleteButton.SetActive(!itemNameDescription.activeSelf); itemNameDescription.SetActive(!itemNameDescription.activeSelf); } - else { - itemDescription.SetActive(true); + else + { + itemDescription.transform.parent.parent.parent.gameObject.SetActive(true); + itemDeleteButton.SetActive(true); itemNameDescription.SetActive(true); } itemNameDescription.GetComponent<ItemUIScript>().InventorySlot = inventorySlot; itemDescription.GetComponent<ItemUIScript>().InventorySlot = inventorySlot; + ResetScrollbarForDescription(); + } + public void OnItemDeleteClick() + { + InventorySlot inventorySlot = itemNameDescription.GetComponent<ItemUIScript>()?.InventorySlot; + if (inventorySlot?.item?.itemName != null) + { + inventory.RemoveItem(inventorySlot.item, inventorySlot.quantity); + itemNameDescription.SetActive(false); + itemDeleteButton.SetActive(false); + ResetScrollbarForDescription(); + itemDescription.transform.parent.parent.parent.gameObject.SetActive(false); + } + } + + private void ResetScrollbarForDescription() + { + //var scrollRect = itemDescription.transform.parent.parent.GetComponent<ScrollRect>(); + //if (scrollRect != null) + //{ + // // Reset the scroll position + // scrollRect.normalizedPosition = Vector2.one; // (1,1) = top, (0,0) = bottom + + // // Force the scroll view to refresh its layout + // LayoutRebuilder.ForceRebuildLayoutImmediate(scrollRect.content); + + // // Reset the content's position + // var content = itemDescription.transform.Find("ItemTextDescription"); + // if (content != null) + // { + // RectTransform rectTransform = content.GetComponent<RectTransform>(); + // if (rectTransform != null) + // { + // rectTransform.anchoredPosition = Vector2.zero; + // } + // } + //} + // Reset the scroll position + var scrollrect = itemDescription.transform.parent.parent.GetComponent<ScrollRect>(); + if (scrollrect != null) + { + Debug.Log("Resetting scroll position"); + scrollrect.verticalNormalizedPosition = 1; // 0 = top, 1 = bottom + } + // Reset the content's position + // transform.Find("ItemTextDescription") + //var content = itemDescription.transform.Find("ItemTextDescription"); + //if (content != null) + //{ + // RectTransform rectTransform = content.GetComponent<RectTransform>(); + // if (rectTransform != null) + // { + // rectTransform.anchoredPosition = Vector2.zero; + // } + //} } private void UpdateItemContentList() @@ -194,7 +253,9 @@ // Add click event listener only if the itemUI was just created if (isCreated) + { itemUI.GetComponent<Button>().onClick.AddListener(() => OnItemClick(itemUIScript.InventorySlot)); + } else { // Update the itemUIScript of the itemNameDescription panel if the item is already selected -- Gitblit v1.9.3