using System.Collections; using System.Collections.Generic; using UnityEngine; using Sirenix.OdinInspector; namespace KairoEngine.Inventory { public class ItemContainer : MonoBehaviour { public string title = ""; [ShowInInspector] public List inventory = new List(); public void Start() { if(title == "") title = gameObject.name + "\'s Items"; } public List ItemList { get { return inventory; } } public bool HasItem(string title) { for (int i = 0; i < inventory.Count; i++) { if (inventory[i].item.title == title) { return true; } } return false; } public bool HasItem(string title, int quantity) { for (int i = 0; i < inventory.Count; i++) { if (inventory[i].item.title == title && inventory[i].quantity >= quantity) { return true; } } return false; } public void AddItem(string title, int quantity) { for (int i = 0; i < inventory.Count; i++) { if(title == inventory[i].item.title) { if(inventory[i].item.stackble) { inventory[i].quantity += quantity; ItemContainerEvents.Update(this); return; } } } ItemBase item = ItemLibrary.GetItemByName(title); ItemRef itemRef = new ItemRef(item, quantity); inventory.Add(itemRef); ItemContainerEvents.Update(this); } public void AddItem(ItemRef ItemRef) { for (int i = 0; i < inventory.Count; i++) { if(ItemRef.item.title == inventory[i].item.title) { if(inventory[i].item.stackble) { inventory[i].quantity += ItemRef.quantity; ItemContainerEvents.Update(this); return; } } } inventory.Add(ItemRef); ItemContainerEvents.Update(this); } public void RemoveItem(ItemRef itemRef) { if (itemRef == null) return; for (int i = 0; i < inventory.Count; i++) { if(inventory[i].item.title == itemRef.item.title) { if(inventory[i].quantity <= itemRef.quantity) { inventory.RemoveAt(i); } else { inventory[i].quantity -= itemRef.quantity; } ItemContainerEvents.Update(this); return; } } } public ItemRef GetItem(ItemBase item) { ItemRef itemRef = null; for (int i = 0; i < inventory.Count; i++) { if(inventory[i].item.title == item.title) { itemRef = inventory[i]; return itemRef; } } return itemRef; } public void UpdateItem(ItemRef itemRef) { for (int i = 0; i < inventory.Count; i++) { if (inventory[i].item.title == itemRef.item.title) { if(itemRef.quantity <= 0) inventory.Remove(inventory[i]); else inventory[i] = itemRef; ItemContainerEvents.Update(this); return; } } } void Update() { for (int i = 0; i < inventory.Count; i++) { inventory[i].lastUsed += Time.deltaTime; } } } }