Setup serve direction after scoring

This commit is contained in:
2026-10-08 07:43:00 +02:00
parent 25bd7a85a1
commit d6c52cecda
2 changed files with 11 additions and 4 deletions
+9 -3
View File
@@ -21,9 +21,13 @@ init_ball :: proc() -> Entity {
}
}
serve_ball :: proc(ball: ^Entity) {
serve_ball :: proc(ball: ^Entity, serve_dir: u8) {
dir_x: f32 = 0.0
// Randomize initial direction: -1.0 or 1.0
dir_x := f32(rand.float32() > 0.5 ? 1 : -1)
if serve_dir == 0 do dir_x = f32(rand.float32() > 0.5 ? 1 : -1)
if serve_dir == 1 do dir_x = 1.0
if serve_dir == 2 do dir_x = -1.0
dir_y := rand.choice([]f32{-0.1, 0.1}) // Slightly angled launch
ball.vel = rl.Vector2Normalize({dir_x, dir_y}) * ball.speed
}
@@ -45,7 +49,7 @@ update_ball :: proc(ball: ^Entity, level: ^Level, dt: f32) {
level.serve_timer -= dt
if level.serve_timer <= 0 {
serve_ball(ball)
serve_ball(ball, level.serve_dir)
}
return
@@ -86,12 +90,14 @@ update_ball :: proc(ball: ^Entity, level: ^Level, dt: f32) {
increment_score(&level.score_player, level.score_win, true, ball)
reset_ball(ball)
level.serve_timer = level.wait_time
level.serve_dir = 1
}
if ball.pos.x <= field_bounds.x + ball.size.x {
increment_score(&level.score_enemy, level.score_win, false, ball)
reset_ball(ball)
level.serve_timer = level.wait_time
level.serve_dir = 2
}
ball.pos += ball.vel * dt
+2 -1
View File
@@ -21,6 +21,7 @@ Level :: struct {
player: Entity,
opponent: Entity,
ball: Entity,
serve_dir: u8,
serve_timer: f32,
wait_time: f32,
score_player: int,
@@ -55,7 +56,7 @@ init_level :: proc() -> Level {
ball = init_ball(),
serve_timer = SERVE_WAIT_TIME,
wait_time = SERVE_WAIT_TIME,
score_win = 1,
score_win = 3,
score_player = 0,
score_enemy = 0,
particles = make([dynamic]Particle),