/* 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 "timer.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); virtual ~GameState() {} void execute() throw(StateExit); bool initted() { return init_done;} virtual bool init(); protected: virtual void iterate() = 0; virtual void render() = 0; void on_exit(); stack* state_stack; SDL_Surface* display; bool init_done; Timer timer; static unsigned int FPS; }; #endif