using System.Threading.Tasks;
using UnityEngine;
namespace Input
{
///
/// Interface for characters that can participate in scripted interactions.
/// Provides movement-to-target with arrival/cancellation notifications.
/// Implemented by BasePlayerMovementController to enable all controllers to interact with items.
///
public interface IInteractingCharacter
{
///
/// Controller-driven interaction movement. Each controller implements its own behavior
/// based on the interactable's settings (characterToInteract, CharacterMoveToTarget, etc.)
///
/// The interactable to move to
/// True if movement succeeded and character arrived, false if cancelled/failed
Task MoveToInteractableAsync(Interactions.InteractableBase interactable);
///
/// Moves character to target position and notifies when arrived/cancelled
///
void MoveToAndNotify(Vector3 target);
///
/// Interrupts any in-progress MoveToAndNotify operation
///
void InterruptMoveTo();
///
/// Fired when character arrives at MoveToAndNotify target
///
event System.Action OnArrivedAtTarget;
///
/// Fired when MoveToAndNotify is cancelled/interrupted
///
event System.Action OnMoveToCancelled;
///
/// Character's transform (for position queries)
///
Transform transform { get; }
}
}