using System; using System.Collections.Generic; using UnityAtoms.BaseAtoms; 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; 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); } } }