X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgame%2Flevel%2Flevel_editor%2Flayer.c;h=1c3e1b8eefd5323a2c880187235c3f5eb3a12e43;hb=dfbfad94ef1d888cc4ca93b1fe6623b50d98273c;hp=ea53dedb723c0a60845815f9e37a481a706e6ee8;hpb=dfd9c024c4d6e9ec44cbdbb9ca10ad6f159f1c6d;p=nothing.git diff --git a/src/game/level/level_editor/layer.c b/src/game/level/level_editor/layer.c index ea53dedb..1c3e1b8e 100644 --- a/src/game/level/level_editor/layer.c +++ b/src/game/level/level_editor/layer.c @@ -1,35 +1,78 @@ #include "game/camera.h" -#include "system/lt.h" -#include "system/stacktrace.h" -#include "layer.h" -#include "dynarray.h" - -struct Layer { - Lt *lt; - Dynarray *rects; - Dynarray *colors; -}; - -Layer *create_layer(void) -{ - return NULL; -} +#include "rect_layer.h" +#include "point_layer.h" +#include "player_layer.h" +#include "label_layer.h" +#include "background_layer.h" +#include "./layer.h" -void destroy_layer(Layer *layer) +int layer_render(LayerPtr layer, const Camera *camera, int active) { - trace_assert(layer); + switch (layer.type) { + case LAYER_RECT: + return rect_layer_render(layer.ptr, camera, active); + + case LAYER_POINT: + return point_layer_render(layer.ptr, camera, active); + + case LAYER_PLAYER: + return player_layer_render(layer.ptr, camera, active); + + case LAYER_BACKGROUND: + return background_layer_render(layer.ptr, camera, active); + + case LAYER_LABEL: + return label_layer_render(layer.ptr, camera, active); + } + + return -1; } -int layer_render(const Layer *layer, Camera *camera) +int layer_event(LayerPtr layer, + const SDL_Event *event, + const Camera *camera, + UndoHistory *undo_history) { - trace_assert(layer); - trace_assert(camera); - return 0; + 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_event(Layer *layer, const SDL_Event *event) +int layer_dump_stream(LayerPtr layer, + FILE *stream) { - trace_assert(layer); - trace_assert(event); - return 0; + switch (layer.type) { + case LAYER_RECT: + return rect_layer_dump_stream(layer.ptr, stream); + + case LAYER_POINT: + return point_layer_dump_stream(layer.ptr, stream); + + case LAYER_PLAYER: + 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; }