]> git.localhorst.tv Git - orbi.git/blob - src/app/Application.h
simple controller
[orbi.git] / src / app / Application.h
1 #ifndef ORBI_APPLICATION_H_
2 #define ORBI_APPLICATION_H_
3
4 #include "Controller.h"
5 #include "../graphics/Camera.h"
6 #include "../graphics/Moveable.h"
7 #include "../graphics/Texture.h"
8 #include "../graphics/Vector.h"
9
10 #include <SDL.h>
11
12
13 namespace orbi {
14
15 class Canvas;
16 class Tileset;
17 class World;
18
19 class Application {
20
21 public:
22         Application(Canvas &, World &, Tileset &);
23
24         void Control(Entity &);
25         void Relinquish();
26
27 public:
28         void Run();
29
30 private:
31         void Loop(int delta_ms);
32
33         void HandleEvents();
34         void OnKeyDown(const SDL_KeyboardEvent &);
35         void OnKeyUp(const SDL_KeyboardEvent &);
36
37         void Update(int delta_ms);
38
39         void Render();
40         void RenderBackground();
41         void RenderWorld();
42         void RenderEntities();
43         void RenderUI();
44
45 private:
46         Canvas &canvas;
47         World &world;
48         Tileset &tiles;
49
50         Controller ctrl;
51         Vector<float> focus;
52         Moveable<float> target;
53         Camera cam;
54
55         Uint32 last;
56         bool running;
57         bool paused;
58
59 };
60
61 }
62
63 #endif