GameStateManager.hxx 592 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #ifndef SNAKE_GAMESTATEMANAGER_HXX
  3. #define SNAKE_GAMESTATEMANAGER_HXX
  4. #include "LoadingState.hxx"
  5. #include "SplashState.hxx"
  6. #include <stack>
  7. enum class GameStates {
  8. Loading,
  9. Splash,
  10. MainMenu,
  11. Game,
  12. GameOver,
  13. };
  14. class GameStateManager final {
  15. public:
  16. GameStateManager();
  17. ~GameStateManager();
  18. GameState* current();
  19. void push_state(GameStates new_state);
  20. void pop_state();
  21. void replace_state(GameStates new_state);
  22. private:
  23. std::stack<GameStates> states_;
  24. LoadingState loading_;
  25. SplashState splash_;
  26. };
  27. #endif // SNAKE_GAMESTATEMANAGER_HXX