using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [System.Serializable] [CreateAssetMenu(fileName = "New Item", menuName = "Inventory/Items")] public class Item : ScriptableObject { public int id; public int Id { get { return id; } set { id = value; } } public string name; public string Name { get { return name; } set { name = value; } } public string description; public string Description { get { return description; } set { description = value; } } public int level; public int Level { get { return level; } set { level = value; } } public int value; public int Value { get { return value; } set { this.value = value; } } public Sprite image; public Sprite Image { get { return image; } set { image = value; } } // to handle object created on scene for example after removing from inventory public GameObject itemModel; public GameObject ItemModel { get { return itemModel; } set { itemModel = value; } } public int price; public int Price { get { return price; } set { price = value; } } public UnityEvent useEffect = new UnityEvent(); public Item() {} public Item(Item _item) { this.Name = _item.Name; this.Description = _item.Description; this.Level = _item.Level; this.Value = _item.Value; this.Price = _item.price; this.ItemModel = _item.ItemModel; this.Image = _item.Image; } public Item(string _name, string _description, int _level, int _value, GameObject _itemModel, Sprite _image) { this.Name = _name; this.Description = _description; this.Level = _level; this.Value = _value; this.ItemModel = _itemModel; this.Image = _image; } public Item(string _name, string _description, int _level, int _value, int _price, GameObject _itemModel, Sprite _image) { this.Name = _name; this.Description = _description; this.Level = _level; this.Value = _value; this.Price = _price; this.ItemModel = _itemModel; this.Image = _image; } public void InvokeEffectAction() { Debug.Log($"Use {name} effect"); useEffect.Invoke(); } public void InvokeEffectAction(int slotNumber) { Debug.Log($"Use {name} effect"); useEffect.Invoke(); } }