#include "game/level/level_editor/rect_layer.h"
#include "math/extrema.h"
-struct Platforms {
- Lt *lt;
-
- Rect *rects;
- Color *colors;
- size_t rects_size;
-};
-
-Platforms *create_platforms_from_rect_layer(const RectLayer *layer)
+Platforms create_platforms_from_rect_layer(const RectLayer *layer)
{
trace_assert(layer);
- Lt *lt = create_lt();
+ Platforms platforms = {0};
+ platforms.rects_size = rect_layer_count(layer);
- Platforms *platforms = PUSH_LT(
- lt,
- nth_calloc(1, sizeof(Platforms)),
- free);
- if (platforms == NULL) {
- RETURN_LT(lt, NULL);
- }
- platforms->lt = lt;
+ platforms.rects = nth_calloc(1, sizeof(Rect) * platforms.rects_size);
+ memcpy(
+ platforms.rects,
+ rect_layer_rects(layer),
+ sizeof(Rect) * platforms.rects_size);
- 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, 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, rect_layer_colors(layer), sizeof(Color) * platforms->rects_size);
+ platforms.colors = nth_calloc(1, sizeof(Color) * platforms.rects_size);
+ memcpy(
+ platforms.colors,
+ rect_layer_colors(layer),
+ sizeof(Color) * platforms.rects_size);
return platforms;
}
-void destroy_platforms(Platforms *platforms)
+void destroy_platforms(Platforms platforms)
{
- trace_assert(platforms);
- RETURN_LT0(platforms->lt);
+ free(platforms.rects);
+ free(platforms.colors);
}
int platforms_render(const Platforms *platforms,