00001 #ifndef XCLONE_APPLICATION_H 00002 #define XCLONE_APPLICATION_H 00003 00004 #include "includes.h" 00005 #include "GameState.h" 00006 00007 class GameState; 00008 00009 class Application 00010 { 00011 public: 00012 Application(); 00013 virtual ~Application(); 00014 00015 virtual void init() = 0; 00016 virtual void update() = 0; 00017 virtual void deinit() = 0; 00018 00019 virtual void processSDLEvent(SDL_Event& event) = 0; 00020 00021 void changeState(GameState* gs); 00022 void pushState(GameState* gs); 00023 void popState(); 00024 00025 bool const running(); 00026 00027 void quit(); 00028 00029 protected: 00030 GameState* getCurrentGameState(); 00031 void popAllStates(); 00032 00033 private: 00034 vector<GameState*> _states; 00035 bool _running; 00036 }; 00037 00038 #endif