Item.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using UnityEngine;
  2. namespace MazeGen
  3. {
  4. /// <summary>
  5. /// Base class for all equippable/inventory items. Weapons, armor, and consumables
  6. /// should derive from this. Stored as ScriptableObjects for easy editor configuration.
  7. /// </summary>
  8. public abstract class Item : ScriptableObject
  9. {
  10. [SerializeField] private string _itemName = "New Item";
  11. [SerializeField] private string _description = "";
  12. [SerializeField] private Sprite _icon;
  13. [SerializeField] private int _rarity = 1; // 1=common, 2=uncommon, 3=rare, 4=epic, 5=legendary
  14. public string ItemName => _itemName;
  15. public string Description => _description;
  16. public Sprite Icon => _icon;
  17. public int Rarity => _rarity;
  18. /// <summary>
  19. /// Called when this item is equipped. Override in subclasses to apply bonuses.
  20. /// Return false if the item cannot be equipped right now (e.g., armor too heavy for current level).
  21. /// </summary>
  22. public virtual bool OnEquip(CharacterSheet character)
  23. {
  24. return true;
  25. }
  26. /// <summary>Called when this item is unequipped. Override to remove bonuses.</summary>
  27. public virtual void OnUnequip(CharacterSheet character)
  28. {
  29. }
  30. /// <summary>Short label for UI - override if needed.</summary>
  31. public virtual string GetLabel() => _itemName;
  32. }
  33. }