using System;

namespace Unity.BossRoom.Gameplay.GameplayObjects.Character.AI
{

    /// <summary>
    /// Base class for all AIStates
    /// </summary>
    public abstract class AIState
    {
        /// <summary>
        /// Indicates whether this state thinks it can become/continue to be the active state.
        /// </summary>
        /// <returns></returns>
        public abstract bool IsEligible();

        /// <summary>
        /// Called once each time this state becomes the active state.
        /// (This will only happen if IsEligible() has returned true for this state)
        /// </summary>
        public abstract void Initialize();

        /// <summary>
        /// Called once per frame while this is the active state. Initialize() will have
        /// already been called prior to Update() being called
        /// </summary>
        public abstract void Update();

    }
}