]> git.localhorst.tv Git - sdl-test8.git/blobdiff - src/app/Application.h
added collision engine, more or less stole gameplay from sdl-test7
[sdl-test8.git] / src / app / Application.h
diff --git a/src/app/Application.h b/src/app/Application.h
new file mode 100644 (file)
index 0000000..73e6400
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Application.h
+ *
+ *  Created on: Apr 8, 2012
+ *      Author: holy
+ */
+
+#ifndef APP_APPLICATION_H_
+#define APP_APPLICATION_H_
+
+#include "Control.h"
+#include "Timer.h"
+#include "../sdl/InitScreen.h"
+
+#include <stack>
+#include <SDL/SDL.h>
+
+
+namespace app {
+
+class State;
+
+class Application
+: public Control {
+
+       public:
+               explicit Application(sdl::InitScreen *screen, State *initialState);
+               virtual ~Application(void);
+       private:
+               Application(const Application &);
+               Application &operator =(const Application &);
+
+       public:
+               void Run(void);
+               void Loop(void);
+
+       public:
+               virtual void ChangeState(State *);
+               virtual void PushState(State *);
+               virtual void PopState(void);
+               virtual 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::InitScreen *screen;
+               std::stack<State *> states;
+               Timer timer;
+               Uint32 last;
+
+};
+
+}
+
+#endif /* APP_APPLICATION_H_ */