using Ashwild.Player;
namespace Ashwild.Interaction
{
///
/// Implemented by anything the player can interact with via the interaction
/// raycast (pickups, doors, chests, levers, NPCs...). PlayerInteractor only
/// knows about this contract, never the concrete types.
///
public interface IInteractable
{
///
/// Short label describing the action, shown under the crosshair while the
/// player is aiming at this target (e.g. "Pick up Wood", "Open"). Returning
/// null or empty means "no interaction offered right now" — PlayerInteractor
/// skips such targets entirely (no hover, no Interact call), so a component may
/// implement IInteractable yet stay inert until it opts in (e.g. a Harvestable
/// that is only gatherable by hand when its bare-hand flag is set).
///
string InteractionPrompt { get; }
///
/// Performs the interaction. Called once when the player presses interact
/// while aiming at this target.
///
void Interact();
}
}