--- /dev/null
+/*
+ * Application.h
+ *
+ * Created on: Apr 8, 2012
+ * Author: holy
+ */
+
+#ifndef APP_APPLICATION_H_
+#define APP_APPLICATION_H_
+
+#include "../sdl/InitScreen.h"
+
+#include <stack>
+#include <SDL/SDL.h>
+
+
+namespace app {
+
+class State;
+
+class Application {
+
+public:
+ explicit Application(SDL_Surface *screen, State *initialState);
+ ~Application(void);
+private:
+ Application(const Application &);
+ Application &operator =(const Application &);
+
+public:
+ void Run(void);
+ void Loop(void);
+
+public:
+ void ChangeState(State *);
+ void PushState(State *);
+ void PopState(void);
+ void Quit(void);
+
+private:
+ State *CurrentState(void);
+ void RealPushState(State *);
+ void RealPopState(void);
+ void PopAllStates(void);
+
+private:
+ void HandleEvents(void);
+ void UpdateWorld(Uint32 deltaT);
+ void Render(void);
+
+private:
+ SDL_Surface *screen;
+ std::stack<State *> states;
+ Uint32 last;
+
+};
+
+}
+
+#endif /* APP_APPLICATION_H_ */