fix(ui): render partial target-bank states

Records 90 through 104 and 109 through 120 deactivate in linked three-line
groups. For each group, the flag-bearing head switches its recovered bounds
from overlay B to overlay A until the complete bank rearms every record. Rust
updated collision activity but never drew these nine intermediate states.

Render the five bumper-bank and four TDK-bank head regions directly from the
175-record ledger. Extend the bank regression to prove partial activation and
post-completion clearing, and seed two partial groups in the deterministic
rules framebuffer.

Test Plan:
- `cargo test --workspace --all-targets --all-features` -- 120 passed
- `cargo clippy --workspace --all-targets --all-features -- -D warnings` -- passed
- `rumdl check --flavor commonmark RECONSTRUCTION.md CHANGELOG.md` -- passed
- `cargo run -- --simulate targets --step 26 --screenshot /tmp/tdkpin-targets-banks.png` -- passed; partial bumper and TDK bank regions visually inspected at 640x460
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 20:12:45 +02:00
parent 71938c0062
commit f53cd5ab2b
5 changed files with 48 additions and 8 deletions
+16
View File
@@ -26,6 +26,17 @@ const BUMPER_VALUE_REGIONS: [(i32, i32, i32, i32); 5] = [
(177, 280, 195, 299),
(193, 303, 211, 322),
];
const BANK_TARGET_REGIONS: [(u8, i32, i32, i32, i32); 9] = [
(90, 282, 231, 306, 246),
(93, 282, 217, 306, 231),
(96, 282, 202, 306, 216),
(99, 282, 187, 306, 201),
(102, 282, 174, 306, 186),
(109, 192, 214, 206, 236),
(112, 178, 209, 191, 231),
(115, 163, 204, 177, 226),
(118, 149, 198, 163, 221),
];
fn bumper_value_indicator_count(value: u32) -> usize {
usize::try_from(value / 1_000)
@@ -742,6 +753,11 @@ impl App {
);
}
}
for (record_id, left, top, right, bottom) in BANK_TARGET_REGIONS {
if game.bank_target_lit(record_id) {
self.draw_active_table_region(left, top, right - left + 1, bottom - top + 1);
}
}
if game.player().diamond_segments > 0 {
let index = usize::from(game.player().diamond_segments.min(9) - 1);
draw_texture(&self.assets.diamond[index], 123.0, 300.0, WHITE);