]> git.lizzy.rs Git - nothing.git/blob - src/game/level/level_editor/layer.c
(#824) Integrate UndoHistory with the LevelEditor
[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                 UndoHistory *undo_history)
34 {
35     switch (layer.type) {
36     case LAYER_RECT:
37         return rect_layer_event(layer.ptr, event, camera, undo_history);
38
39     case LAYER_POINT:
40         return point_layer_event(layer.ptr, event, camera, undo_history);
41
42     case LAYER_PLAYER:
43         return player_layer_event(layer.ptr, event, camera, undo_history);
44
45     case LAYER_COLOR_PICKER:
46         // TODO: undo history is not really applicable to color picker as layer
47         return color_picker_event(layer.ptr, event, NULL);
48
49     case LAYER_LABEL:
50         return label_layer_event(layer.ptr, event, camera, undo_history);
51     }
52
53     return -1;
54 }
55
56 int layer_dump_stream(LayerPtr layer,
57                       FILE *stream)
58 {
59     switch (layer.type) {
60     case LAYER_RECT:
61         return rect_layer_dump_stream(layer.ptr, stream);
62
63     case LAYER_POINT:
64         return point_layer_dump_stream(layer.ptr, stream);
65
66     case LAYER_PLAYER:
67         return player_layer_dump_stream(layer.ptr, stream);
68
69     case LAYER_COLOR_PICKER: {
70         color_hex_to_stream(color_picker_rgba(layer.ptr), stream);
71         return fprintf(stream, "\n");
72     }
73
74     case LAYER_LABEL:
75         return label_layer_dump_stream(layer.ptr, stream);
76     }
77
78     return -1;
79 }