using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UI_Inventory : MonoBehaviour { private Inventory inventory; private Transform itemSlotContainer; private Transform itemSlotTemplate; private List itemSlots = new List(); public Text Amount; private void Awake() { itemSlotContainer = transform.Find("itemSlotContainer"); itemSlotTemplate = itemSlotContainer.Find("itemSlotTemplate"); } public void SetInventory(Inventory inventory) { this.inventory = inventory; RefreshInventoryItems(); } //public void UpdateInventory() //{ // Iteruj przez sloty od końca do początku, aby unikać problemów z indeksami //for (int i = itemSlots.Count - 1; i >= 0; i--) // { // RectTransform slot = itemSlots[i]; // if (slot != null) // { // Sprawdź, czy slot ma komponent Image i Text, które przechowują dane o przedmiotach // Image image = slot.Find("Image").GetComponent(); // Text text = slot.Find("Amount").GetComponent(); // if (image != null && text != null) // { // Zakładam, że przedmiot jest powiązany z obrazem i tekstem w slocie // Sprite itemSprite = image.sprite; //int itemAmount = int.Parse(text.text); // Funkcja powinna zwrócić Item na podstawie sprite // } // } // } //} public void RefreshInventoryItems() { int x = 0; int y = 0; float itemSlotCellSize = 30f; foreach (Item item in inventory.GetItemList()) { RectTransform itemSlotRectTransform = Instantiate(itemSlotTemplate, itemSlotContainer).GetComponent(); itemSlotRectTransform.gameObject.SetActive(true); itemSlotRectTransform.anchoredPosition = new Vector2(x * itemSlotCellSize, y * itemSlotCellSize); Image image = itemSlotRectTransform.Find("Image").GetComponent(); Text text = itemSlotRectTransform.Find("Amount").GetComponent(); image.sprite = item.GetSprite(); text.text = item.amount.ToString(); itemSlots.Add(itemSlotRectTransform); x++; if (x > 1) // Poprawiłem warunek na większy, aby dostosować pozycjonowanie { x = 0; y++; } } } public void ClearInventoryItems() { foreach (RectTransform slot in itemSlots) { Destroy(slot.gameObject); } itemSlots.Clear(); } }