]> git.localhorst.tv Git - sdl-test7.git/blob - src/app/Application.h
imported current version
[sdl-test7.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 "../sdl/InitScreen.h"
13
14 #include <stack>
15 #include <SDL/SDL.h>
16
17
18 namespace app {
19
20 class State;
21
22 class Application
23 : public Control {
24
25         public:
26                 explicit Application(sdl::InitScreen *screen, State *initialState);
27                 virtual ~Application(void);
28         private:
29                 Application(const Application &);
30                 Application &operator =(const Application &);
31
32         public:
33                 void Run(void);
34                 void Loop(void);
35
36         public:
37                 virtual void ChangeState(State *);
38                 virtual void PushState(State *);
39                 virtual void PopState(void);
40                 virtual void Quit(void);
41
42         private:
43                 State *CurrentState(void);
44                 void RealPushState(State *);
45                 void RealPopState(void);
46                 void PopAllStates(void);
47
48         private:
49                 void HandleEvents(void);
50                 void UpdateWorld(Uint32 deltaT);
51                 void Render(void);
52
53         private:
54                 sdl::InitScreen *screen;
55                 std::stack<State *> states;
56                 Uint32 last;
57
58 };
59
60 }
61
62 #endif /* APP_APPLICATION_H_ */