using System; using System.Collections.Generic; using KitsuneCafe.SOAP; using KitsuneCafe.Sys.Attributes; using UnityEngine; namespace KitsuneCafe.ItemSystem { public abstract class BaseItem : ScriptableObject, IItem { [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 Sprite icon; public Sprite Icon => icon; [SerializeField] private List tags; public IReadOnlyCollection Tags => tags; [SerializeField] private GameObject worldPrefab; [SerializeField] private GameObject previewPrefab; [Button("Generate New ID")] protected void GenerateNewId() { id = Guid.NewGuid().ToString(); #if UNITY_EDITOR UnityEditor.EditorUtility.SetDirty(this); #endif } public GameObject CreateInstance() { return Instantiate(worldPrefab); } public GameObject CreatePreview() { return Instantiate(previewPrefab); } } }