Afterparty/Assets/Scripts/InventorySystem.cs
2026-01-11 17:04:23 +03:00

133 lines
3.1 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class InventorySystem : MonoBehaviour
{
public static InventorySystem Instance;
[Header("UI Settings")]
public Image[] slotImages;
public Sprite defaultEmptyIcon;
public CanvasGroup uiCanvasGroup;
[Header("Settings")]
public float fadeTime = 3f;
private ItemData[] _items = new ItemData[5];
private float _timer;
private bool _isVisible;
public bool isInputActive = false;
private void Awake()
{
Instance = this;
}
private void Start()
{
uiCanvasGroup.alpha = 0;
UpdateUI();
}
private void Update()
{
if (!isInputActive) return;
HandleInput();
HandleFade();
}
private void HandleInput()
{
if (Input.GetKeyDown(KeyCode.Alpha1)) ShowInventory();
if (Input.GetKeyDown(KeyCode.Alpha2)) ShowInventory();
if (Input.GetKeyDown(KeyCode.Alpha3)) ShowInventory();
if (Input.GetKeyDown(KeyCode.Alpha4)) ShowInventory();
if (Input.GetKeyDown(KeyCode.Alpha5)) ShowInventory();
}
private void HandleFade()
{
if (_timer > 0)
{
_timer -= Time.deltaTime;
uiCanvasGroup.alpha = Mathf.Lerp(uiCanvasGroup.alpha, 1, Time.deltaTime * 10);
}
else
{
uiCanvasGroup.alpha = Mathf.Lerp(uiCanvasGroup.alpha, 0, Time.deltaTime * 2);
}
}
public void ShowInventory()
{
_timer = fadeTime;
}
public bool AddItem(ItemData newItem)
{
if (HasItem(newItem))
{
Debug.Log("An item of this type is already in the inventory: " + newItem.itemName);
return false;
}
for (int i = 0; i < _items.Length; i++)
{
if (_items[i] == null)
{
_items[i] = newItem;
UpdateUI();
ShowInventory();
Debug.Log("Picked up: " + newItem.itemName);
return true;
}
}
Debug.Log("Inventory is full!");
return false;
}
public void RemoveItem(ItemData itemToRemove)
{
for (int i = 0; i < _items.Length; i++)
{
if (_items[i] == itemToRemove)
{
_items[i] = null;
UpdateUI();
ShowInventory();
Debug.Log("Removed: " + itemToRemove.itemName);
return;
}
}
}
private void UpdateUI()
{
for (int i = 0; i < slotImages.Length; i++)
{
if (_items[i] != null)
{
slotImages[i].sprite = _items[i].icon;
slotImages[i].color = Color.white;
}
else
{
slotImages[i].color = Color.clear;
}
}
}
public bool HasItem(ItemData itemToCheck)
{
foreach (var item in _items)
{
if (item != null && item == itemToCheck)
{
return true;
}
}
return false;
}
}