using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Theriapolis.Game.Screens;

/// <summary>
/// A single game screen (title, world map, tactical, etc.).
/// Managed by ScreenManager as a push/pop stack.
/// </summary>
public interface IScreen
{
    /// <summary>Called once when the screen is first pushed onto the stack.</summary>
    void Initialize(Game1 game);

    /// <summary>Called every frame while this screen is active (top of stack).</summary>
    void Update(GameTime gameTime);

    /// <summary>Called every frame to draw the screen.</summary>
    void Draw(GameTime gameTime, SpriteBatch spriteBatch);

    /// <summary>Called when a screen is popped or another is pushed on top.</summary>
    void Deactivate();

    /// <summary>Called when this screen comes back to the top of the stack.</summary>
    void Reactivate();
}
