summaryrefslogtreecommitdiff
path: root/in_practice/breakout/powerup.c
diff options
context:
space:
mode:
Diffstat (limited to 'in_practice/breakout/powerup.c')
-rw-r--r--in_practice/breakout/powerup.c31
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);
+}