]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/layer.c
(#1050) Replace system clipboard with internal one
[nothing.git] / src / game / level / level_editor / layer.c
index e5e1537579560ab4d801b1822ba4fd9a34a62962..1b95068596f8e838c0df4f590ae0276972be300b 100644 (file)
@@ -2,22 +2,27 @@
 #include "rect_layer.h"
 #include "point_layer.h"
 #include "player_layer.h"
+#include "label_layer.h"
+#include "background_layer.h"
 #include "./layer.h"
 
-int layer_render(LayerPtr layer, Camera *camera, float fa)
+int layer_render(LayerPtr layer, Camera *camera, int active)
 {
     switch (layer.type) {
     case LAYER_RECT:
-        return rect_layer_render(layer.ptr, camera, fa);
+        return rect_layer_render(layer.ptr, camera, active);
 
     case LAYER_POINT:
-        return point_layer_render(layer.ptr, camera, fa);
+        return point_layer_render(layer.ptr, camera, active);
 
     case LAYER_PLAYER:
-        return player_layer_render(layer.ptr, camera, fa);
+        return player_layer_render(layer.ptr, camera, active);
 
-    case LAYER_COLOR_PICKER:
-        return color_picker_render(layer.ptr, camera);
+    case LAYER_BACKGROUND:
+        return background_layer_render(layer.ptr, camera, active);
+
+    case LAYER_LABEL:
+        return label_layer_render(layer.ptr, camera, active);
     }
 
     return -1;
@@ -25,25 +30,48 @@ int layer_render(LayerPtr layer, Camera *camera, float fa)
 
 int layer_event(LayerPtr layer,
                 const SDL_Event *event,
-                const Camera *camera)
+                const Camera *camera,
+                UndoHistory *undo_history)
+{
+    switch (layer.type) {
+    case LAYER_RECT:
+        return rect_layer_event(layer.ptr, event, camera, undo_history);
+
+    case LAYER_POINT:
+        return point_layer_event(layer.ptr, event, camera, undo_history);
+
+    case LAYER_PLAYER:
+        return player_layer_event(layer.ptr, event, camera, undo_history);
+
+    case LAYER_BACKGROUND:
+        return background_layer_event(layer.ptr, event, camera, undo_history);
+
+    case LAYER_LABEL:
+        return label_layer_event(layer.ptr, event, camera, undo_history);
+    }
+
+    return -1;
+}
+
+int layer_dump_stream(LayerPtr layer,
+                      FILE *stream)
 {
     switch (layer.type) {
     case LAYER_RECT:
-        return rect_layer_event(layer.ptr, event, camera);
+        return rect_layer_dump_stream(layer.ptr, stream);
 
     case LAYER_POINT:
-        return point_layer_event(layer.ptr, event, camera);
+        return point_layer_dump_stream(layer.ptr, stream);
 
     case LAYER_PLAYER:
-        return player_layer_event(layer.ptr, event, camera);
-
-    case LAYER_COLOR_PICKER: {
-        if (event->type == SDL_MOUSEBUTTONUP || event->type == SDL_MOUSEBUTTONDOWN) {
-            return color_picker_mouse_button(layer.ptr, &event->button, NULL);
-        } else {
-            return 0;
-        }
-    } break;
+        return player_layer_dump_stream(layer.ptr, stream);
+
+    case LAYER_BACKGROUND: {
+        return background_layer_dump_stream(layer.ptr, stream);
+    }
+
+    case LAYER_LABEL:
+        return label_layer_dump_stream(layer.ptr, stream);
     }
 
     return -1;