namespace Cthangover.Core.Battle
{
///
/// Optional automation contract for battle cores. The base
/// contract describes how a battle starts but
/// not how it advances: every core owns its own UI and waits for player
/// input in its own way. Integration tests and AI tooling therefore ask
/// the core itself when it waits for the player and how to advance the
/// turn, instead of hunting for core-specific buttons by node path.
/// Cores that don't implement this interface are still runnable but are
/// reported as not universally testable by the battle coverage tool.
///
public interface IBattleAutoPlayable
{
///
/// true while the core accepts a player turn advance. Must
/// become false immediately when the turn ends, so a polling
/// driver cannot trigger two turns in a row.
///
bool IsWaitingForPlayerInput { get; }
///
/// Ends the current player turn through the same path the core's UI
/// uses (skipping the player's actions is a valid strategy for
/// smoke tests). Must be a no-op when
/// is false.
///
void AdvancePlayerTurn();
}
}