using UnityEngine; using UnityEngine.Events; using Invector.vItemManager; using Invector.vCharacterController; using System.Collections.Generic; using Sirenix.OdinInspector; namespace Beyond { public class TrinketUIController : MonoBehaviour { [Header("Main References")] public Canvas mainCanvas; public bEquipArea trinketEquipArea; public bItemWindow trinketItemWindow; [Header("Settings")] public KeyCode openKey = KeyCode.T; // CHANGED: Use a list to catch all potential item types (Gemstones, Trinkets, etc) public List trinketTypes = new List() { bItemType.Gemstones, bItemType.Trinkets }; [Header("Events")] public UnityEvent onOpenWindow; public UnityEvent onCloseWindow; private bool isOpen = false; void Start() { if (!mainCanvas) mainCanvas = GetComponent(); if (mainCanvas) mainCanvas.enabled = false; if (trinketItemWindow) trinketItemWindow.gameObject.SetActive(false); } void Update() { if (Input.GetKeyDown(openKey)) Toggle(); } [Button] public void Toggle() { isOpen = !isOpen; if (isOpen) Open(); else Close(); } [Button] public void Open() { var player = Player.Instance; if (!player) return; var itemManager = player.ItemManager; var inventory = itemManager.inventory; if (!inventory) return; // Setup Components trinketEquipArea.inventory = inventory; trinketEquipArea.itemManager = itemManager; trinketEquipArea.Init(); // This calls Start(), which calls SetInventory() on slots // Setup Window trinketItemWindow.inventory = inventory; trinketItemWindow.gameObject.SetActive(true); if (mainCanvas) mainCanvas.enabled = true; Cursor.visible = true; Cursor.lockState = CursorLockMode.None; Time.timeScale = 0; trinketEquipArea.SetNewItemWindow(trinketItemWindow); // Pass the list of types instead of just one trinketEquipArea.SetEquipmentwindowWithFilter(trinketTypes); onOpenWindow.Invoke(); } [Button] public void Close() { if (mainCanvas) mainCanvas.enabled = false; Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; Time.timeScale = 1; onCloseWindow.Invoke(); } } }