miepzerino
2025-04-06 89ffa9ea09da478852ebe24f2ae2348c6b145edd
Assets/Scripts/Inventory/InventoryDisplay.cs
@@ -1,4 +1,5 @@
using Assets.Scripts.Enums;
using Assets.Scripts.Helpers;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -17,6 +18,7 @@
    public GameObject itemNameDescription;
    public GameObject itemDescription;
    public GameObject itemDeleteButton;
    public GameObject inventoryMaxAmount;
    public List<GameObject> itemUIs = new List<GameObject>();
@@ -58,15 +60,20 @@
        //}
        if (context.started)
        {
            inventoryPanel.SetActive(!inventoryPanel.activeSelf);
            if (inventoryPanel.activeSelf)
            {
                UpdateItemContentList();
            }
            else
            {
                //ClearItemContentList();
            }
            ToggleInventoryPanel();
        }
    }
    public void ToggleInventoryPanel()
    {
        inventoryPanel.SetActive(!inventoryPanel.activeSelf);
        if (inventoryPanel.activeSelf)
        {
            UpdateItemContentList();
        }
        else
        {
            //ClearItemContentList();
        }
    }
@@ -152,18 +159,19 @@
        //}
        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);
            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()
    {
@@ -173,12 +181,57 @@
            inventory.RemoveItem(inventorySlot.item, inventorySlot.quantity);
            itemNameDescription.SetActive(false);
            itemDeleteButton.SetActive(false);
            itemDescription.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()
    {
        UIHelper.UpdateItemMaxCountText(inventoryMaxAmount.GetComponent<TextMeshProUGUI>(), inventory.items.Count, inventory.maxInventorySize);
        // First, deactivate all existing itemUIs
        itemUIs.ForEach(itemUI => itemUI.SetActive(false));