]> git.localhorst.tv Git - sdl-test8.git/blob - src/app/Application.h
added collision engine, more or less stole gameplay from sdl-test7
[sdl-test8.git] / src / app / Application.h
1 /*
2  * Application.h
3  *
4  *  Created on: Apr 8, 2012
5  *      Author: holy
6  */
7
8 #ifndef APP_APPLICATION_H_
9 #define APP_APPLICATION_H_
10
11 #include "Control.h"
12 #include "Timer.h"
13 #include "../sdl/InitScreen.h"
14
15 #include <stack>
16 #include <SDL/SDL.h>
17
18
19 namespace app {
20
21 class State;
22
23 class Application
24 : public Control {
25
26         public:
27                 explicit Application(sdl::InitScreen *screen, State *initialState);
28                 virtual ~Application(void);
29         private:
30                 Application(const Application &);
31                 Application &operator =(const Application &);
32
33         public:
34                 void Run(void);
35                 void Loop(void);
36
37         public:
38                 virtual void ChangeState(State *);
39                 virtual void PushState(State *);
40                 virtual void PopState(void);
41                 virtual void Quit(void);
42
43         private:
44                 State *CurrentState(void);
45                 void RealPushState(State *);
46                 void RealPopState(void);
47                 void PopAllStates(void);
48
49         private:
50                 void HandleEvents(void);
51                 void UpdateWorld(Uint32 deltaT);
52                 void Render(void);
53
54         private:
55                 sdl::InitScreen *screen;
56                 std::stack<State *> states;
57                 Timer timer;
58                 Uint32 last;
59
60 };
61
62 }
63
64 #endif /* APP_APPLICATION_H_ */