123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- 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<ItemRef> inventory = new List<ItemRef>();
- public void Start()
- {
- if(title == "") title = gameObject.name + "\'s Items";
- }
- public List<ItemRef> 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;
- }
- }
- }
- }
|