using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public abstract class ActiveBlock : Block
{

    #region Read-Only Variables
     public bool isFinished { get; protected set; }
    #endregion Read-Only Variables

    #region Class Functions

    /// <summary>
    /// Is called after all players have taken one move
    /// 
    /// Should be implemented by a derived class
    /// </summary>
    public virtual IEnumerator OnEnvironmentTurn(PlayerData[] allPlayers)
    {
        isFinished = true;
        yield break;    
    }

    /// <summary>
    /// Called after all players have finished all their moves
    /// 
    /// Should be implemented by a derived class
    /// </summary>
    public virtual IEnumerator OnRoundEnd(PlayerData[] allPlayers)
    {
        isFinished = true;
        yield break;
    }

    public void Reset()
    {
        isFinished = false;
    }

    /// <summary>
    /// Returns what order this block should be called in for the environment turn;
    /// </summary>
    /// <returns>The Higher the number returned the earlier it goes</returns>
    /// <remarks>This was made abstract because it shouldn't be accidentally changed + so we don;t accidentally forget to implement it</remarks>
    public abstract int GetInitative();

    #endregion Class Functions


}
