GameStateManager.hxx 542 B

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