﻿using EnergyShell.GameObjects.Actors.Animation;

namespace EnergyShell.GameObjects.Actors
{
    /// <summary>
    /// Provides a controller for entities which are able to movement within a game world.
    /// </summary>
    public interface IMovementController
    {
        /// <summary>
        /// Gets the current face direction.
        /// </summary>
        /// <value>
        /// The current face direction.
        /// </value>
        FaceDirection CurrentFaceDirection { get; }

        /// <summary>
        /// Gets the state of the current movement.
        /// </summary>
        /// <value>
        /// The state of the current movement.
        /// </value>
        MovementState CurrentMovementState { get; }

        /// <summary>
        /// Updates the movement of the controlled object.
        /// </summary>
        void Update();
    }
}
