8 #include "./wavy_rect.h"
13 #define WAVE_PILLAR_WIDTH 10.0f
24 wavy_rect_t *create_wavy_rect(rect_t rect, color_t color)
26 lt_t *lt = create_lt();
31 wavy_rect_t *wavy_rect = PUSH_LT(lt, malloc(sizeof(wavy_rect_t)), free);
32 if (wavy_rect == NULL) {
33 throw_error(ERROR_TYPE_SDL2);
37 wavy_rect->rect = rect;
38 wavy_rect->color = color;
39 wavy_rect->angle = 0.0f;
45 wavy_rect_t *create_wavy_rect_from_stream(FILE *stream)
51 if (fscanf(stream, "%f%f%f%f%6s\n",
55 throw_error(ERROR_TYPE_LIBC);
59 color_t color = color_from_hexstr(color_name);
61 return create_wavy_rect(rect, color);
64 void destroy_wavy_rect(wavy_rect_t *wavy_rect)
67 RETURN_LT0(wavy_rect->lt);
70 int wavy_rect_render(const wavy_rect_t *wavy_rect,
71 SDL_Renderer *renderer,
72 const camera_t *camera)
79 for (float wave_scanner = 0;
80 wave_scanner < wavy_rect->rect.w;
81 wave_scanner += WAVE_PILLAR_WIDTH) {
83 const float s = (float) (rand() % 50) * 0.1f;
88 wavy_rect->rect.x + wave_scanner,
89 wavy_rect->rect.y + s * sinf(wavy_rect->angle + wave_scanner / WAVE_PILLAR_WIDTH),
90 WAVE_PILLAR_WIDTH * 1.20f,
92 wavy_rect->color) < 0) {
96 srand((unsigned int) time(NULL));
101 int wavy_rect_update(wavy_rect_t *wavy_rect,
106 float d = (float) delta_time / 1000.0f;
108 wavy_rect->angle = fmodf(wavy_rect->angle + 2.0f * d, 2 * PI);
113 int wavy_rect_overlaps(const wavy_rect_t *wavy_rect,
117 return rects_overlap(wavy_rect->rect, rect);