]> git.lizzy.rs Git - nothing.git/blobdiff - src/game/level/level_editor/layer.c
(#860) Improve the indication of the currently selected layer
[nothing.git] / src / game / level / level_editor / layer.c
index a672cb83a6d3455a43c44dd9c8d4314d17f4752a..4bad9a84f58ce7dc73682a6989b50cb946019329 100644 (file)
@@ -1,67 +1,39 @@
 #include "game/camera.h"
-#include "system/lt.h"
-#include "system/stacktrace.h"
-#include "system/nth_alloc.h"
-#include "system/log.h"
-#include "layer.h"
-#include "dynarray.h"
+#include "rect_layer.h"
+#include "point_layer.h"
+#include "player_layer.h"
+#include "./layer.h"
 
-struct Layer {
-    Lt *lt;
-    Dynarray *rects;
-    Dynarray *colors;
-};
-
-Layer *create_layer(void)
+int layer_render(LayerPtr layer, Camera *camera, float fa)
 {
-    Lt *lt = create_lt();
-    if (lt == NULL) {
-        return NULL;
-    }
-
-    Layer *layer = PUSH_LT(lt, nth_alloc(sizeof(Layer)), free);
-    if (layer == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-    layer->lt = lt;
+    switch (layer.type) {
+    case LAYER_RECT:
+        return rect_layer_render(layer.ptr, camera, fa);
 
-    layer->rects = PUSH_LT(
-        lt,
-        create_dynarray(sizeof(Rect)),
-        destroy_dynarray);
-    if (layer->rects == NULL) {
-        RETURN_LT(lt, NULL);
-    }
+    case LAYER_POINT:
+        return point_layer_render(layer.ptr, camera, fa);
 
-    layer->colors = PUSH_LT(
-        lt,
-        create_dynarray(sizeof(Color)),
-        destroy_dynarray);
-    if (layer->colors == NULL) {
-        RETURN_LT(lt, NULL);
+    case LAYER_PLAYER:
+        return player_layer_render(layer.ptr, camera, fa);
     }
 
-    trace_assert(layer);
-
-    return layer;
+    return -1;
 }
 
-void destroy_layer(Layer *layer)
+int layer_event(LayerPtr layer,
+                const SDL_Event *event,
+                const Camera *camera)
 {
-    trace_assert(layer);
-    RETURN_LT0(layer->lt);
-}
+    switch (layer.type) {
+    case LAYER_RECT:
+        return rect_layer_event(layer.ptr, event, camera);
 
-int layer_render(const Layer *layer, Camera *camera)
-{
-    trace_assert(layer);
-    trace_assert(camera);
-    return 0;
-}
+    case LAYER_POINT:
+        return point_layer_event(layer.ptr, event, camera);
 
-int layer_event(Layer *layer, const SDL_Event *event)
-{
-    trace_assert(layer);
-    trace_assert(event);
-    return 0;
+    case LAYER_PLAYER:
+        return player_layer_event(layer.ptr, event, camera);
+    }
+
+    return -1;
 }