]> git.lizzy.rs Git - nothing.git/blob - src/game/level/level_editor/layer.c
Merge pull request #944 from tsoding/942
[nothing.git] / src / game / level / level_editor / layer.c
1 #include "game/camera.h"
2 #include "rect_layer.h"
3 #include "point_layer.h"
4 #include "player_layer.h"
5 #include "label_layer.h"
6 #include "./layer.h"
7
8 int layer_render(LayerPtr layer, Camera *camera, int active)
9 {
10     switch (layer.type) {
11     case LAYER_RECT:
12         return rect_layer_render(layer.ptr, camera, active);
13
14     case LAYER_POINT:
15         return point_layer_render(layer.ptr, camera, active);
16
17     case LAYER_PLAYER:
18         return player_layer_render(layer.ptr, camera, active);
19
20     case LAYER_COLOR_PICKER:
21         return active ? color_picker_render(layer.ptr, camera) : 0;
22
23     case LAYER_LABEL:
24         return label_layer_render(layer.ptr, camera, active);
25     }
26
27     return -1;
28 }
29
30 int layer_event(LayerPtr layer,
31                 const SDL_Event *event,
32                 const Camera *camera)
33 {
34     switch (layer.type) {
35     case LAYER_RECT:
36         return rect_layer_event(layer.ptr, event, camera);
37
38     case LAYER_POINT:
39         return point_layer_event(layer.ptr, event, camera);
40
41     case LAYER_PLAYER:
42         return player_layer_event(layer.ptr, event, camera);
43
44     case LAYER_COLOR_PICKER:
45         return color_picker_event(layer.ptr, event, NULL);
46
47     case LAYER_LABEL:
48         return label_layer_event(layer.ptr, event, camera);
49     }
50
51     return -1;
52 }
53
54 int layer_dump_stream(LayerPtr layer,
55                       FILE *stream)
56 {
57     switch (layer.type) {
58     case LAYER_RECT:
59         return rect_layer_dump_stream(layer.ptr, stream);
60
61     case LAYER_POINT:
62         return point_layer_dump_stream(layer.ptr, stream);
63
64     case LAYER_PLAYER:
65         return player_layer_dump_stream(layer.ptr, stream);
66
67     case LAYER_COLOR_PICKER: {
68         color_hex_to_stream(color_picker_rgba(layer.ptr), stream);
69         return fprintf(stream, "\n");
70     }
71
72     case LAYER_LABEL:
73         return label_layer_dump_stream(layer.ptr, stream);
74     }
75
76     return -1;
77 }