/* Abstract instance of a game state. This contains the basic functions for game looping code, and has a fully-functional event handler we can overload later */ #ifndef _GAME_STATE_H_ #define _GAME_STATE_H_ #include "mainevent.h" #include #include #include using std::exception; using std::stack; class StateExit : public exception {}; class GameState : public MainEvent { public: GameState(stack* state_stack, SDL_Surface* display) { this->state_stack = state_stack, this->display = display; } virtual ~GameState() {} virtual bool init() = 0; void execute() throw(StateExit); protected: virtual void iterate() = 0; virtual void render() = 0; void on_exit(); stack* state_stack; SDL_Surface* display; }; #endif