pub struct DrawOutput {
pub biscuit_rect: Rect,
pub golden_rect: Rect,
pub green_coin_rect: Rect,
pub play_area: Rect,
pub upgrade_rows: Vec<(usize, Rect)>,
pub fingerer_rows: Vec<(usize, Rect)>,
pub help_hits: Vec<(HelpAction, Rect)>,
pub prestige_reset_rect: Rect,
}Expand description
Per-frame layout snapshot produced by draw. Single source of truth
for every clickable region on screen + the play-area envelope.
The platform shells (app.rs, wasm_app.rs) store this verbatim
and call crate::input::InputContext::from_layout to project it
into the per-event input context. Adding a new clickable region only
touches this struct + InputContext + the projection — never the
platform code. (We were burned by the alternative once: a missing
green_coin_rect field on the wasm-side InputContext constructor
crashed the wasm build after the native code shipped just fine.)
Fields§
§biscuit_rect: Rect§golden_rect: Rect§green_coin_rect: RectOn-screen Green Coin marker rect, or zero-rect when no coin is
visible. Hit-tested by the click router exactly like golden_rect
— clicking either one routes through Action::CatchGolden, which
the sim resolves by trying both catch paths.
play_area: RectThe whole left column where the biscuit + hands + particles live — i.e. “the box that displays the ass.” Used by the input router so the scroll-wheel zoom fires anywhere in this region (including the vast empty space around a small biscuit at low zoom), and only the right-hand sidebar opts out of zoom.
upgrade_rows: Vec<(usize, Rect)>(upgrade_idx, screen_row_rect) pairs for the Upgrades panel —
populated only when the active mode renders that panel; empty
otherwise. The click router hit-tests these for BuyUpgrade.
First element of each tuple is also the digit-shortcut target,
kept aligned with visible_upgrades.
fingerer_rows: Vec<(usize, Rect)>(fingerer_idx, screen_row_rect) for the Game-mode sidebar.
help_hits: Vec<(HelpAction, Rect)>(action, rect) for every clickable help-bar hint at the bottom of
the play column. Mouse-first players use these to switch panels,
catch goldens, prestige-reset, and quit — all of which used to be
keyboard-only. Empty rects when the hint is non-actionable
(e.g. [Space/Click] finger is informational, not a click target).
prestige_reset_rect: RectClick rect for the Press [r] to reset and claim confirm line in
the Prestige panel. Default rect when not in Prestige mode or no
prestige is available.
Trait Implementations§
Source§impl Default for DrawOutput
impl Default for DrawOutput
Source§fn default() -> DrawOutput
fn default() -> DrawOutput
Auto Trait Implementations§
impl Freeze for DrawOutput
impl RefUnwindSafe for DrawOutput
impl Send for DrawOutput
impl Sync for DrawOutput
impl Unpin for DrawOutput
impl UnsafeUnpin for DrawOutput
impl UnwindSafe for DrawOutput
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more