diff options
Diffstat (limited to 'in_practice/breakout/ball.c')
-rw-r--r-- | in_practice/breakout/ball.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/in_practice/breakout/ball.c b/in_practice/breakout/ball.c new file mode 100644 index 0000000..9aa42a2 --- /dev/null +++ b/in_practice/breakout/ball.c @@ -0,0 +1,24 @@ +#include "ball.h" + +void move_ball(ball_t *ball, f32 dt, i32 width) +{ + if (ball->stuck) + return; + ball->o.pos = add_v2(ball->o.pos, scale_v2(ball->o.vel, dt)); + if (ball->o.pos.x < 0.0f) { + ball->o.vel.x = -ball->o.vel.x; + ball->o.pos.x = 0.0f; + } + if (ball->o.pos.x + ball->o.size.x > width) { + ball->o.vel.x = -ball->o.vel.x; + ball->o.pos.x = width - ball->o.size.x; + } + if (ball->o.pos.y < 0.0f) { + ball->o.vel.y = -ball->o.vel.y; + ball->o.pos.y = 0.0f; + } +} + +void reset_ball(ball_t *ball, v2 pos, v2 vel) +{ +} |