using System.Collections.Generic; using Components.UI; using Managers; using Managers.Item; using UnityEngine; // InventoryUI.cs public class InventoryUIController : MonoBehaviour { public Transform itemParent; public PlayerManager playerManager; public InventoryManager inventoryManager; private readonly Dictionary _slots = new(); public static InventoryUIController Instance { get; } private void Awake() { inventoryManager = playerManager.GetInventoryManager(); } private void Start() { Debug.Log("InventoryUI Start"); if (itemParent == null) Debug.LogWarning("ItemParent is null! Can not attach"); UpdateUI(); } public void ListChildren(GameObject parent) { foreach (Transform child in parent.transform) Debug.Log("Child: " + child.name); } public void UpdateUI() { var inventoryManager = playerManager.GetInventoryManager(); // Clear existing slots _slots.Clear(); // Get values from inventory and redraw the inventory slots based on that. // Delete existing children if any. foreach (Transform child in itemParent) Destroy(child.gameObject); if (inventoryManager.Slots.Count == 0) inventoryManager.Initialize(playerManager.GetPlayerData()); var slotPrefab = PrefabManager.Instance.GetSlotPrefab(); var itemPrefab = PrefabManager.Instance.GetItemPrefab(); foreach (var inventorySlot in inventoryManager.Slots) { // Draw slots to screen var slotDisplay = Instantiate(slotPrefab, itemParent); var i = inventorySlot.Key; var inventorySlotComponent = slotDisplay.GetComponent(); // Add prefab to slot inventorySlotComponent.SetSlotDetails(inventorySlot.Value); _slots.Add(i, slotDisplay); } Debug.Log("Finished adding items to slots"); } }