X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgame%2Flevel%2Fplatforms.c;h=55b98682b6f4b191e78a448f9a1f5257adadeb11;hb=bd1d655923bd83f3b35aa743f51888d6716a84fb;hp=a0b2e2885c9cf019b6d5f35d5a63d8eec4e5672b;hpb=85ed430d9bc3da85d747abc959404ea6d4eb6561;p=nothing.git diff --git a/src/game/level/platforms.c b/src/game/level/platforms.c index a0b2e288..55b98682 100644 --- a/src/game/level/platforms.c +++ b/src/game/level/platforms.c @@ -1,4 +1,4 @@ -#include +#include #include "system/stacktrace.h" #include #include @@ -7,11 +7,10 @@ #include "platforms.h" #include "system/lt.h" -#include "system/lt/lt_adapters.h" #include "system/line_stream.h" #include "system/nth_alloc.h" #include "system/log.h" -#include "game/level/level_editor/layer.h" +#include "game/level/level_editor/rect_layer.h" struct Platforms { Lt *lt; @@ -21,14 +20,11 @@ struct Platforms { size_t rects_size; }; -Platforms *create_platforms_from_layer(const Layer *layer) +Platforms *create_platforms_from_rect_layer(const RectLayer *layer) { trace_assert(layer); Lt *lt = create_lt(); - if (lt == NULL) { - return NULL; - } Platforms *platforms = PUSH_LT( lt, @@ -39,20 +35,20 @@ Platforms *create_platforms_from_layer(const Layer *layer) } platforms->lt = lt; - platforms->rects_size = layer_count(layer); + platforms->rects_size = rect_layer_count(layer); platforms->rects = PUSH_LT(lt, nth_calloc(1, sizeof(Rect) * platforms->rects_size), free); if (platforms->rects == NULL) { RETURN_LT(lt, NULL); } - memcpy(platforms->rects, layer_rects(layer), sizeof(Rect) * platforms->rects_size); + memcpy(platforms->rects, rect_layer_rects(layer), sizeof(Rect) * platforms->rects_size); platforms->colors = PUSH_LT(lt, nth_calloc(1, sizeof(Color) * platforms->rects_size), free); if (platforms->colors == NULL) { RETURN_LT(lt, NULL); } - memcpy(platforms->colors, layer_colors(layer), sizeof(Color) * platforms->rects_size); + memcpy(platforms->colors, rect_layer_colors(layer), sizeof(Color) * platforms->rects_size); return platforms; } @@ -65,7 +61,7 @@ void destroy_platforms(Platforms *platforms) /* TODO(#450): platforms do not render their ids in debug mode */ int platforms_render(const Platforms *platforms, - Camera *camera) + const Camera *camera) { for (size_t i = 0; i < platforms->rects_size; ++i) { if (camera_fill_rect( @@ -90,14 +86,15 @@ void platforms_touches_rect_sides(const Platforms *platforms, } } -Vec platforms_snap_rect(const Platforms *platforms, +Vec2f platforms_snap_rect(const Platforms *platforms, Rect *object) { trace_assert(platforms); - Vec result = vec(1.0f, 1.0f); + Vec2f result = vec(1.0f, 1.0f); for (size_t i = 0; i < platforms->rects_size; ++i) { if (rects_overlap(platforms->rects[i], *object)) { + // TODO(#1161): can we reuse the Level Editor snapping mechanism in physics snapping result = vec_entry_mult(result, rect_snap(platforms->rects[i], object)); } }