using System; using System.Collections.Generic; using System.Text; namespace Nuclex.Game.States { /// Allows management and switching of game states public interface IGameStateService { /// The currently active game state. Can be null. IGameState ActiveState { get; } /// Pauses the currently active state void Pause(); /// Resumes the currently active state void Resume(); /// Pushes the specified state onto the state stack /// State that will be pushed onto the stack void Push(IGameState state); /// Pushes the specified state onto the state stack /// State that will be pushed onto the stack /// /// Behavior of the game state in relation to the state(s) below it on the stack /// void Push(IGameState state, GameStateModality modality); /// Takes the currently active game state from the stack /// The game state that has been popped from the stack IGameState Pop(); /// Switches the game to the specified state /// State the game will be switched to /// The game state that was replaced on the stack /// /// This replaces the running game state in the stack with the specified state. /// IGameState Switch(IGameState state); /// Switches the game to the specified state /// State the game will be switched to /// /// Behavior of the game state in relation to the state(s) below it on the stack /// /// The game state that was replaced on the stack /// /// This replaces the running game state in the stack with the specified state. /// IGameState Switch(IGameState state, GameStateModality modality); } } // namespace Nuclex.Game.States