8 #include "./platforms.h"
15 struct platforms_t *create_platforms(const struct rect_t *rects, size_t rects_size)
19 struct platforms_t *platforms = malloc(sizeof(struct platforms_t));
21 if (platforms == NULL) {
22 goto platforms_malloc_fail;
25 platforms->rects = malloc(sizeof(struct rect_t) * rects_size);
27 if (platforms->rects == NULL) {
28 goto platforms_rects_malloc_fail;
31 platforms->rects = memcpy(platforms->rects, rects, sizeof(struct rect_t) * rects_size);
32 platforms->rects_size = rects_size;
36 platforms_rects_malloc_fail:
38 platforms_malloc_fail:
42 void destroy_platforms(struct platforms_t *platforms)
46 free(platforms->rects);
50 int render_platforms(const struct platforms_t *platforms,
51 SDL_Renderer *renderer)
53 if (SDL_SetRenderDrawColor(renderer, 255, 96, 96, 255) < 0) {
59 for (size_t i = 0; i < platforms->rects_size; ++i) {
60 rect.x = (int)roundf(platforms->rects[i].x);
61 rect.y = (int)roundf(platforms->rects[i].y);
62 rect.w = (int)roundf(platforms->rects[i].w);
63 rect.h = (int)roundf(platforms->rects[i].h);
65 if (SDL_RenderFillRect(renderer, &rect) < 0) {
73 int platforms_rect_object_collide(const struct platforms_t *platforms,
74 const struct rect_t *object)
79 for (size_t i = 0; i < platforms->rects_size; ++i) {
80 if (rects_intersect(object, &platforms->rects[i])) {