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