using UnityEngine; namespace MazeGen { /// /// Base class for all equippable/inventory items. Weapons, armor, and consumables /// should derive from this. Stored as ScriptableObjects for easy editor configuration. /// public abstract class Item : ScriptableObject { [SerializeField] private string _itemName = "New Item"; [SerializeField] private string _description = ""; [SerializeField] private Sprite _icon; [SerializeField] private int _rarity = 1; // 1=common, 2=uncommon, 3=rare, 4=epic, 5=legendary public string ItemName => _itemName; public string Description => _description; public Sprite Icon => _icon; public int Rarity => _rarity; /// /// Called when this item is equipped. Override in subclasses to apply bonuses. /// Return false if the item cannot be equipped right now (e.g., armor too heavy for current level). /// public virtual bool OnEquip(CharacterSheet character) { return true; } /// Called when this item is unequipped. Override to remove bonuses. public virtual void OnUnequip(CharacterSheet character) { } /// Short label for UI - override if needed. public virtual string GetLabel() => _itemName; public virtual void Use(CharacterSheet character) { Debug.LogWarning($"Item {ItemName} has no Use() implementation."); } } }