class State{
public:
static State *current_state;
State(){}
virtual ~State(){}
virtual void init()=0; //Load resources
virtual void cleanup()=0; //Unload resources
virtual void pause()=0;
virtual void resume()=0;
void changeState(State *next_state )
{
current_state->cleanup();
delete current_state;
current_state = next_state;
current_state->init();
}
virtual void getInput()=0;
virtual void draw()=0;
virtual void update()=0;
};
extern State *current_state;
int main()
{
State::current_state = new Menu;
while(game_running)
{
State::current_state->getInput();
State::current_state->update();
State::current_state->draw();
}
printf("Game Finished\n");
return 0;
}