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);
}