#pragma once #include #include class Crawler; namespace States{ enum State{ GAME_RUN, OVERWORLD_MAP, MAIN_MENU, }; }; class GameState{ public: inline static GameState*STATE=nullptr; inline static std::mapstates; static void Initialize(); virtual void OnStateChange(GameState*prevState)=0; virtual void OnUserUpdate(Crawler*game)=0; virtual void Draw(Crawler*game)=0; static inline void ChangeState(States::State newState){ GameState*prevState=STATE; if(!states.count(newState)){ std::cout<<"WARNING! State not defined for state "<OnStateChange(prevState); } };