91 lines
2.8 KiB
C#
91 lines
2.8 KiB
C#
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<bItemType> trinketTypes = new List<bItemType>() { bItemType.Gemstones, bItemType.Trinkets };
|
|
|
|
[Header("Events")]
|
|
public UnityEvent onOpenWindow;
|
|
public UnityEvent onCloseWindow;
|
|
|
|
private bool isOpen = false;
|
|
|
|
void Start()
|
|
{
|
|
if (!mainCanvas) mainCanvas = GetComponent<Canvas>();
|
|
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();
|
|
}
|
|
}
|
|
} |