]> git.localhorst.tv Git - l2e.git/blobdiff - src/app/Application.h
added basic application class
[l2e.git] / src / app / Application.h
diff --git a/src/app/Application.h b/src/app/Application.h
new file mode 100644 (file)
index 0000000..e43faf4
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * 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_ */