75 lines
2.0 KiB
C#
75 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
// InventoryUI.cs
|
|
|
|
public class BoxUIController : MonoBehaviour
|
|
{
|
|
public Transform itemParent;
|
|
public BoxManager boxManager;
|
|
public PrefabManager prefabManager;
|
|
|
|
private readonly Dictionary<int, GameObject> _slots = new();
|
|
|
|
private void Start()
|
|
{
|
|
Debug.Log("BoxUI Start");
|
|
if (itemParent == null)
|
|
{
|
|
Debug.LogWarning("ItemParent is null! Can not attach");
|
|
return;
|
|
}
|
|
|
|
boxManager.OnActiveBoxChanged += UpdateUI;
|
|
|
|
// Delete existing children if any.
|
|
foreach (Transform child in itemParent) Destroy(child.gameObject);
|
|
|
|
if (boxManager.ActiveBox == null)
|
|
return;
|
|
|
|
if (boxManager.ActiveBox.Slots.Count == 0)
|
|
boxManager.Initialize();
|
|
|
|
UpdateUI(boxManager.ActiveBox);
|
|
|
|
Debug.Log("Finished adding items to toolbar slots");
|
|
}
|
|
|
|
|
|
public void ListChildren(GameObject parent)
|
|
{
|
|
foreach (Transform child in parent.transform) Debug.Log("Child: " + child.name);
|
|
}
|
|
|
|
public void UpdateUI(Box box)
|
|
{
|
|
// clear all exisitings slots
|
|
Debug.Log("Updating UI displaying box: " + box.boxId + " / " + box.name);
|
|
_slots.Clear();
|
|
foreach (Transform child in itemParent) Destroy(child.gameObject);
|
|
|
|
// Get values from inventory and redraw the inventory slots based on that.
|
|
var slotPrefab = prefabManager.GetSlotPrefab();
|
|
// var itemPrefab = prefabManager.GetItemPrefab();
|
|
|
|
|
|
foreach (var slot in box.Slots)
|
|
{
|
|
// Draw slots to screen
|
|
var slotDisplay = Instantiate(slotPrefab, itemParent);
|
|
|
|
slotDisplay.transform.localScale = new Vector3((float)0.5, (float)0.5, (float)0.5);
|
|
|
|
var i = slot.Key;
|
|
|
|
|
|
var slotComponent = slotDisplay.GetComponent<SlotComponent>();
|
|
|
|
// Add prefab to slot
|
|
slotComponent.SetSlotDetails(slot.Value);
|
|
|
|
_slots.Add(i, slotDisplay);
|
|
}
|
|
}
|
|
} |