fix(game): restore the recovered collision table

Replace the mirrored, partial wall transcription with all active static line
and circle objects from the Win16 registration table. Preserve the original
object IDs for drain and shooter-stop handling, and use bounded physics
substeps so fast balls cannot skip thin rails.

Test Plan:
- cargo fmt --all -- --check
- cargo test
- cargo clippy --all-targets --all-features -- -D warnings
- git diff --check
This commit is contained in:
2026-08-22 17:27:34 +02:00
parent 4bc370be12
commit f904977ae4
5 changed files with 342 additions and 180 deletions
+6 -8
View File
@@ -2,6 +2,7 @@ use crate::{
assets::Assets,
game::{Controls, Event, Game},
persistence::{HighScore, Language, Persistence, SavedData, insert_high_score},
table::BUMPERS,
};
use macroquad::prelude::*;
@@ -460,13 +461,10 @@ impl App {
},
);
}
for (index, center) in [vec2(207.0, 109.0), vec2(167.0, 148.0), vec2(219.0, 167.0)]
.into_iter()
.enumerate()
{
for (index, bumper) in BUMPERS.into_iter().enumerate() {
if game.bumper_flash[index] > 0.0 {
draw_circle_lines(center.x, center.y, 17.0, 3.0, WHITE);
draw_circle_lines(center.x, center.y, 13.0, 2.0, YELLOW);
draw_circle_lines(bumper.center.x, bumper.center.y, 17.0, 3.0, WHITE);
draw_circle_lines(bumper.center.x, bumper.center.y, 13.0, 2.0, YELLOW);
}
}
if game.player().diamond_segments > 0 {
@@ -503,8 +501,8 @@ impl App {
}
for (start, end) in [
(vec2(103.0, 394.0), vec2(58.0, 374.0)),
(vec2(211.0, 394.0), vec2(256.0, 374.0)),
(vec2(103.0, 397.0), vec2(58.0, 374.0)),
(vec2(210.0, 397.0), vec2(256.0, 374.0)),
] {
draw_line(start.x, start.y, end.x, end.y, 22.0, BLACK);
draw_circle(start.x, start.y, 11.0, BLACK);