//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.GameLogic;
using MUnique.OpenMU.Pathfinding;
///
/// Interface for objects which support walking.
///
public interface ISupportWalk : ILocateable
{
///
/// Gets a value indicating whether this instance can walk on safezone.
///
///
/// true if this instance can walk on safezone; otherwise, false.
///
bool CanWalkOnSafezone { get; }
///
/// Gets a value indicating whether this instance is walking.
///
bool IsWalking { get; }
///
/// Gets the delay between each step. Lower delay means faster walking.
///
TimeSpan StepDelay { get; }
///
/// Gets the walk target coordinate.
///
Point WalkTarget { get; }
///
/// Gets the steps which are about to happen next by writing them into the given span.
///
/// The steps.
/// The number of written steps.
ValueTask GetStepsAsync(Memory steps);
///
/// Gets the directions of the steps which are about to happen next by writing them into the given span.
///
/// The directions.
/// The number of written directions.
ValueTask GetDirectionsAsync(Memory directions);
///
/// Stops the walking.
///
ValueTask StopWalkingAsync();
}