using UnityEngine; /// /// Interface for items that can be used/activated by the player. /// public interface IUsableItem { /// /// Check if the item can be used. /// /// The GameObject using the item (player) /// Optional target for the use action /// True if the item can be used bool CanUse(GameObject user, GameObject target); /// /// Use the item. /// /// The GameObject using the item (player) /// Optional target for the use action void Use(GameObject user, GameObject target); /// /// Get the action descriptor for using this item. /// ActionDescriptor GetUseAction(); /// /// Whether using this item consumes it (reduces stack count). /// bool IsConsumable { get; } } /// /// Interface for items that can be equipped on the player. /// public interface IEquippableItem { /// /// Get the equipment prefab to spawn. /// GameObject GetEquipmentPrefab(); /// /// Get position offset for equipment placement. /// Vector3 GetPositionOffset(); /// /// Get rotation offset for equipment placement. /// Vector3 GetRotationOffset(); /// /// Get the name of the attachment point on the character. /// string GetAttachmentPointName(); /// /// Find the attachment point transform on a user. /// Transform FindAttachmentPoint(GameObject user); }