Scriptum/Assets/Scripts/REFACTORING/Models/Item/Item.cs
2022-12-22 03:38:00 +01:00

118 lines
2.6 KiB
C#

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();
}
}