summary refs log tree commit diff stats
path: root/src/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/system.h')
-rw-r--r--src/system.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/system.h b/src/system.h new file mode 100644 index 0000000..e630c48 --- /dev/null +++ b/src/system.h
@@ -0,0 +1,55 @@
1#ifndef SYSTEM_H_B61A8CEA
2#define SYSTEM_H_B61A8CEA
3
4#include "entity_manager.h"
5
6class Game;
7class Texture;
8
9class System {
10public:
11
12 using id_type = EntityManager::id_type;
13
14 System(Game& game) : game_(game)
15 {
16 }
17
18 virtual ~System() = default;
19
20 /**
21 * Updates the state of a system.
22 *
23 * @param dt - The amount of time in seconds that have passed since the last
24 * update.
25 */
26 virtual void tick(double)
27 {
28 }
29
30 /**
31 * Renders to a texture.
32 *
33 * @param texture - The surface to render to.
34 */
35 virtual void render(Texture&)
36 {
37 }
38
39 /**
40 * Processes keyboard input.
41 *
42 * @param key - The relevant key.
43 *
44 * @param action - The action performed (press, released, etc).
45 */
46 virtual void input(int, int)
47 {
48 }
49
50protected:
51
52 Game& game_;
53};
54
55#endif /* end of include guard: SYSTEM_H_B61A8CEA */