GameStateManager.hxx 817 B

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