9 #include "./wavy_rect.h"
17 lava_t *create_lava_from_stream(FILE *stream)
21 lt_t *lt = create_lt();
26 lava_t *lava = PUSH_LT(lt, malloc(sizeof(lava_t)), free);
28 throw_error(ERROR_TYPE_LIBC);
32 if (fscanf(stream, "%lu", &lava->rects_count) < 0) {
33 throw_error(ERROR_TYPE_LIBC);
37 lava->rects = PUSH_LT(lt, malloc(sizeof(wavy_rect_t*) * lava->rects_count), free);
38 if (lava->rects == NULL) {
39 throw_error(ERROR_TYPE_LIBC);
43 for (size_t i = 0; i < lava->rects_count; ++i) {
44 lava->rects[i] = PUSH_LT(lt, create_wavy_rect_from_stream(stream), destroy_wavy_rect);
45 if (lava->rects[i] == NULL) {
55 void destroy_lava(lava_t *lava)
61 /* TODO(#119): Lava rendering is too boring */
62 int lava_render(const lava_t *lava,
63 SDL_Renderer *renderer,
64 const camera_t *camera)
70 for (size_t i = 0; i < lava->rects_count; ++i) {
71 if (wavy_rect_render(lava->rects[i], renderer, camera) < 0) {
79 int lava_update(lava_t *lava, float delta_time)
83 for (size_t i = 0; i < lava->rects_count; ++i) {
84 if (wavy_rect_update(lava->rects[i], delta_time) < 0) {
92 int lava_overlaps_rect(const lava_t *lava,
97 for (size_t i = 0; i < lava->rects_count; ++i) {
98 if (wavy_rect_overlaps(lava->rects[i], rect)) {