diff options
Diffstat (limited to 'in_practice/breakout/powerup.c')
-rw-r--r-- | in_practice/breakout/powerup.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/in_practice/breakout/powerup.c b/in_practice/breakout/powerup.c new file mode 100644 index 0000000..ab09b9f --- /dev/null +++ b/in_practice/breakout/powerup.c @@ -0,0 +1,31 @@ +#include "powerup.h" + +v2 default_powerup_size = {60.0f, 20.0}; + +struct powerup spawn_powerup(v2 pos, v3 color, enum powerup_type type, f32 duration, u32 texture) +{ + struct powerup powerup = {0}; + powerup.pos = pos; + powerup.vel = (v2){0.0f, 150.0f}; + powerup.size = default_powerup_size; + powerup.color = color; + powerup.type = type; + powerup.duration = duration; + powerup.texture = texture; + return powerup; +} + +i32 check_powerup_collision(struct powerup powerup, struct object obj) +{ + + i32 x = (powerup.pos.x + powerup.size.x >= obj.pos.x) && + (obj.pos.x + obj.size.x >= powerup.pos.x); + i32 y = (powerup.pos.y + powerup.size.y >= obj.pos.y) && + (obj.pos.y + obj.size.y >= powerup.pos.y); + return x && y; +} + +void render_powerup(struct sprite_renderer renderer, struct powerup powerup) +{ + render_sprite(renderer, powerup.texture, powerup.pos, powerup.size, 0.0f, powerup.color); +} |