83 lines
1.9 KiB
C#
83 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using KitsuneCafe.SOAP;
|
|
using KitsuneCafe.System;
|
|
using NaughtyAttributes;
|
|
using UnityEngine;
|
|
|
|
namespace KitsuneCafe.ItemSystem
|
|
{
|
|
public enum ItemType
|
|
{
|
|
Normal,
|
|
Weapon,
|
|
Tool
|
|
}
|
|
|
|
[CreateAssetMenu(menuName = KitsuneCafeMenu.Item + "Item")]
|
|
public class Item : ScriptableObject
|
|
{
|
|
[SerializeField]
|
|
private string id;
|
|
public string Id => id;
|
|
|
|
[SerializeField]
|
|
private string displayName;
|
|
public string DisplayName => displayName;
|
|
|
|
[SerializeField, TextArea]
|
|
private string description;
|
|
public string Description => description;
|
|
|
|
[SerializeField]
|
|
private List<StringConstant> tags;
|
|
public IReadOnlyList<StringConstant> Tags => tags;
|
|
|
|
[SerializeField]
|
|
private ItemType type;
|
|
public ItemType Type => type;
|
|
|
|
[SerializeField]
|
|
private bool stackable;
|
|
public bool IsStackable => stackable;
|
|
|
|
[SerializeField, ShowIf("stackable")]
|
|
private int maxStackCount = 10;
|
|
public int MaxStackCount => maxStackCount;
|
|
|
|
[SerializeField]
|
|
private Texture2D icon;
|
|
public Texture2D Icon => icon;
|
|
|
|
[SerializeField]
|
|
private GameObject instancePrefab;
|
|
|
|
[SerializeField]
|
|
private GameObject previewPrefab;
|
|
|
|
private void Reset()
|
|
{
|
|
GenerateNewId();
|
|
}
|
|
|
|
[Button("Generate New ID")]
|
|
private void GenerateNewId()
|
|
{
|
|
id = Guid.NewGuid().ToString();
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorUtility.SetDirty(this);
|
|
#endif
|
|
}
|
|
|
|
|
|
public GameObject CreateInstance()
|
|
{
|
|
return Instantiate(instancePrefab);
|
|
}
|
|
|
|
public GameObject CreatePreview()
|
|
{
|
|
return Instantiate(previewPrefab);
|
|
}
|
|
}
|
|
}
|