GameStateManager.hxx 753 B

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