using System.Collections.Generic; using UnityEngine; // Created with collaboration from: // https://forum.unity.com/threads/inventory-system.980646/ [CreateAssetMenu(fileName = "Inventory", menuName = "Inventory/Inventory", order = 51)] public class Inventory : ScriptableObject { [Tooltip("The collection of items and their quantities.")] [SerializeField] private List _items = new List(); public List Items => _items; public void Add(Item item, int count = 1) { if (count <= 0) return; for (int i = 0; i < _items.Count; i++) { ItemStack currentItemStack = _items[i]; if (item == currentItemStack.Item) { currentItemStack.Amount += count; return; } } _items.Add(new ItemStack(item, count)); } public void Remove(Item item, int count = 1) { if (count <= 0) return; for (int i = 0; i < _items.Count; i++) { ItemStack currentItemStack = _items[i]; if (currentItemStack.Item == item) { currentItemStack.Amount -= count; if (currentItemStack.Amount <= 0) _items.Remove(currentItemStack); return; } } } public bool Contains(Item item) { for (int i = 0; i < _items.Count; i++) { if (item == _items[i].Item) { return true; } } return false; } public int Count(Item item) { for (int i = 0; i < _items.Count; i++) { ItemStack currentItemStack = _items[i]; if (item == currentItemStack.Item) { return currentItemStack.Amount; } } return 0; } }