bigger RIO buttons: the red + yellow lamps clear the glass by +10px

Player request: more of the RIO buttons should protrude from the displays so a
FLASHING lamp is easier to notice.  BTRioBankMetricsFor now adds a flat +10px
to `strip` -- the lamp bar -- AFTER the scale; BT_RIO_PROTRUDE=<px> tunes it
and 0 restores the pre-2026-08-14 geometry.

FLAT, not scaled, deliberately: the ask is on-screen noticeability, and the
surround runs the glass at HALF scale where the strip lands on the 6px floor --
a scaled bonus would give the least help exactly where the lamps are smallest.
The floor above it already trades strict proportionality for legibility on this
field; this is the same trade, sized by the players.

Scope falls out of the geometry -- only `strip` moves, so:
  - RED MFD buttons and YELLOW radar buttons (+ the radar foot row) grow;
  - they grow OUTWARD ONLY (the layout anchors the inboard edge), so
    under-glass depth, button WIDTH and every press target are unchanged --
    this is a LONGER bar, not a fatter face;
  - BLUE flight cells lay out from cellW/cellH and never see it.

Verified [T2] by BT_RIOBANK_LOG A/B + surround screenshots: Heat MFD top button
y 21->11, h 126->136 with its bottom edge FIXED at 147; bank bounds 252->272
tall (all five MFDs), radar 252->272 wide; flight-bank bounds byte-identical;
no negative coordinates on any bank; imagery still wins every pixel it covers.
The exploded glass windows size their client to bank.bounds, so they simply
grow with it.

Relation to #172: the alert RING (BT_ALERT_RING, default off) answered the same
night-16 miss after a "+8px grown-face bloom" was rejected on the bench as "the
button got fat".  This is a different shape -- the lamp keeps its width and
shows more of its own bar -- so the ring stays optional.  Desktop-glass
affordance; the pod's buttons are physical and backlit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-08-14 13:23:17 -05:00
co-authored by Claude Opus 4.8
parent d048aab9d3
commit 8ae74cd2f1
2 changed files with 60 additions and 0 deletions
+19
View File
@@ -115,6 +115,25 @@ each, so they cover the foot band too, and the hit test takes the first match
what keeps 0x16/0x17/0x1F/0x1E reachable. That class of bug is why the verification below tests
first-hit reachability, not mere presence.
**Protrusion bonus — `BT_RIO_PROTRUDE` (2026-08-14, player request) [T2 receipt+screenshot].**
Players asked for more of the RIO buttons to clear the glass so a FLASHING lamp is easier to
notice. `BTRioBankMetricsFor` now adds a flat **+10px** to `strip` AFTER the scale, so the bar
reaches that much further out on every renderer; `BT_RIO_PROTRUDE=<px>` tunes it (`0` restores
the pre-2026-08-14 geometry). Deliberately FLAT, not scaled: the surround runs the glass at half
scale where the strip sits on the 6px floor — a scaled bonus would help least exactly where the
lamps are smallest — and that floor already trades proportionality for legibility. Because only
`strip` moves, this touches exactly the **red MFD** and **yellow radar** buttons (+ the radar
foot row) and grows them **outward only**: the layout anchors the inboard edge, so under-glass
depth, button WIDTH and the press targets are unchanged. The **blue flight cells** are laid out
from `cellW/cellH` and never see it (receipt: their bank bounds are byte-identical). Verified by
`BT_RIOBANK_LOG` A/B — e.g. Heat MFD top button `y 21→11, h 126→136` with its bottom edge fixed
at 147, bank bounds `252→272` tall, no negative coordinates — plus a surround screenshot pair.
Relation to **#172**: the alert RING (`BT_ALERT_RING`, default off) answered the same night-16
complaint after a *"+8px grown-face bloom"* was rejected on the bench as "the button got fat";
this is a different shape — the lamp keeps its width and simply shows more of its own bar — so
the ring stays optional. Desktop-glass affordance only; the pod's buttons are physical and
backlit and never had this problem.
## Sticky window placement — BT_GLASS_LAYOUT (2026-07-28) [T2 round-trip-verified]
The `BT_GLASS_PANELS` windows self-place in a pod-faithful ring around the main window
+41
View File
@@ -25,6 +25,46 @@ namespace
const int minimumStrip = 6;
const int defaultGap = 4;
//-------------------------------------------------------------------
// PROTRUSION BONUS (2026-08-14, player request). Flat pixels added to
// the lamp strip AFTER the scale, so the visible bar reaches this much
// further out of the glass on EVERY renderer.
//
// WHY FLAT, not scaled: the ask is on-screen noticeability of a
// FLASHING lamp, and the surround runs the glass at half scale, where
// the strip lands on the `minimumStrip` floor (~6px) -- a scaled bonus
// would give the surround half the help exactly where the lamps are
// smallest. The floor above already establishes legibility over strict
// proportionality for this field; this is the same trade, sized by the
// players. It is a DESKTOP-GLASS affordance: the pod's buttons are
// physical and backlit and have never had this problem.
//
// Scope: only the strip -- so only the RED MFD buttons and the YELLOW
// radar buttons/foot row grow, and they grow OUTWARD ONLY (the layout
// anchors the inboard edge; under-glass depth is unchanged). The BLUE
// flight cells are laid out from cellW/cellH and never see this.
//
// Relation to #172: the alert RING (BT_ALERT_RING, default off) was the
// answer to the same night-16 complaint after a "+8px grown-face bloom"
// was rejected on the bench as "the button got fat". This is a
// different shape -- the lamp keeps its width and simply shows more of
// its own bar -- and it is unconditional, so the ring stays optional.
//-------------------------------------------------------------------
const int defaultProtrude = 10;
int ProtrudeBonus()
{
static int cached = -1;
if (cached < 0)
{
const char *e = getenv("BT_RIO_PROTRUDE"); // tune by eye; 0 = pre-2026-08-14
cached = (e != 0) ? atoi(e) : defaultProtrude;
if (cached < 0) cached = 0;
if (cached > 200) cached = 200;
}
return cached;
}
//-------------------------------------------------------------------
// Per-column horizontal nudge for the 4 MFD buttons, left->right, so
// they line up with the (unevenly spaced) DISPLAY / PROGRAM / ...
@@ -111,6 +151,7 @@ void
int strip = Scaled(nativeStrip, shortAxis, nativeShortAxis);
if (strip < minimumStrip) strip = minimumStrip;
strip += ProtrudeBonus(); // player-requested reach (see above)
out->strip = strip;
out->gap = defaultGap;