GameStateManager.hxx 639 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. GameState* current();
  20. void push_state(GameStates new_state);
  21. void pop_state();
  22. void replace_state(GameStates new_state);
  23. private:
  24. std::stack<GameStates> states_;
  25. LoadingState loading_;
  26. SplashState splash_;
  27. DummyState dummy_;
  28. };
  29. #endif // SNAKE_GAMESTATEMANAGER_HXX