fix(game): reopen the drain and recover stalled balls

The recovered bottom apron had been represented as one solid collision segment,
which prevented the ball from reaching the drain threshold. Split that apron
around the visible center drain so a lost ball decrements the ball count and
allows player and game-over progression to continue.

Add a conservative ball-search impulse after three seconds below the movement
threshold. This protects long-running games from other low-energy rests without
changing active trajectories, and reuses the original nudge sound as feedback.

Test Plan:
- `cargo fmt -- --check` -- passed
- `cargo test --all-targets` -- passed, including drain and ball-search regressions
- `cargo clippy --all-targets -- -D warnings` -- passed
- `git diff --check` -- passed
This commit is contained in:
2026-08-22 16:52:42 +02:00
parent fe33ef902f
commit e19162d54d
3 changed files with 64 additions and 4 deletions
+1 -1
View File
@@ -195,7 +195,7 @@ impl App {
Event::Lock => 2017,
Event::Media => 2022,
Event::ExtraBall => 2019,
Event::Nudge => 2021,
Event::Nudge | Event::BallSearch => 2021,
Event::Drain => 2013,
};
self.assets.play(id, self.saved.settings.sounds);