using UnityEngine; public enum ItemType { Block, Weapon, Armor, Consumable, Tool, Material } [CreateAssetMenu(fileName = "NewItem", menuName = "Inventory/Item")] public class ItemData : ScriptableObject { public string id; public string itemName; public string description; public ItemType type; public GameObject modelPrefab; public Sprite icon; public int maxStack = 64; public bool isCraftable; public CraftingRecipe craftingRecipe; [Header("Item Properties")] public float weight = 1f; public int value = 1; public bool isDroppable = true; public bool isStackable = true; [System.Serializable] public class CraftingRecipe { public string[] ingredients; public int[] amounts; public string resultId; public int resultAmount = 1; } void OnEnable() { if (string.IsNullOrEmpty(id)) { id = System.Guid.NewGuid().ToString(); } } public static ItemData FromJson(string json) => JsonUtility.FromJson(json); public string ToJson() => JsonUtility.ToJson(this, true); public bool CanStackWith(ItemData other) => other != null && id == other.id && isStackable; }