fix(game): restore the original plunger launch
Start each ball at the recovered right-lane coordinates and charge the plunger while Down is held, firing only on release. Render all eleven frames of resource 901, preserve object 25 as the returning-ball catch, and use the object table's center-contact extents without adding the art radius twice. Test Plan: - cargo fmt --all -- --check - cargo test - cargo clippy --all-targets --all-features -- -D warnings - runtime smoke: start, hold Down, release, and inspect the right shooter lane
This commit is contained in:
+10
-3
@@ -5,6 +5,9 @@
|
||||
//! objects use `(param_34, param_32 - 20)` and `(param_30, param_28 - 20)`;
|
||||
//! relative objects accumulate those values from the preceding endpoint.
|
||||
//! The old port used `478 - x`, which mirrored the complete table vertically.
|
||||
//! Circle sizes are already center-contact extents: `FUN_1008_0138` expands
|
||||
//! each object's bounds by `param_26`. They must not be enlarged again by the
|
||||
//! radius of the rendered ball.
|
||||
|
||||
use crate::geometry::Segment;
|
||||
use macroquad::prelude::Vec2;
|
||||
@@ -30,12 +33,16 @@ impl TableSegment {
|
||||
pub struct StaticCircle {
|
||||
pub id: u8,
|
||||
pub center: Vec2,
|
||||
pub radius: f32,
|
||||
pub contact_radius: f32,
|
||||
}
|
||||
|
||||
impl StaticCircle {
|
||||
const fn new(id: u8, center: Vec2, radius: f32) -> Self {
|
||||
Self { id, center, radius }
|
||||
const fn new(id: u8, center: Vec2, contact_radius: f32) -> Self {
|
||||
Self {
|
||||
id,
|
||||
center,
|
||||
contact_radius,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user