Panel: the vRIO layout + coloration, plasma flip fix, button-trap guard

Per Cyd: the on-screen panel now mirrors vRIO (C:\VWE\vrio -- CockpitLayout.cs
+ PanelCanvas.cs, itself the RIOJoy profile-editor layout from the original
Win32 RIO mockup): five 4x2 MFD clusters (addresses descending), four 1x8
board columns (Throttle/Secondary/Screen/Joystick), the two 4x4 hex keypads
(0x50/0x60 -- cells emit real keypad KeyEvents: internal=pilot unit, external=
operator unit), physical names (Panic/Main/Hat*/Pinky...), vRIO colors: red
lamp cells + yellow Secondary/Screen + neutral-blue keypads, flash half-
periods 500/250/125ms, right-click latch (gold outline).  104 controls.

PlasmaWindow: the gauge renderer writes the 128x32 buffer TOP-DOWN -- the
bottom-up flip rendered the marquee upside down (user-reported); copy straight.

Button-trap guard (the e2c21c4 pattern): the authentic base
ConfigureMappableMessageHandler FAIL trap is abort() under DEBUGOFF -- any
aux/zoom button without its L4 override reconstructed KILLED the game on
press.  Default now: loud [FAIL] log + ignore; BT_BUTTON_TRAP=1 restores the
hard trap.  Verified live: synthetic click on a Secondary cell -> 2 [FAIL]
lines (press+release through panel->PadRIO->ProcessRIOEvent->streamed
mapping), game survives and keeps ticking.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-17 22:30:35 -05:00
co-authored by Claude Fable 5
parent db9ac947f7
commit 418acf07e4
4 changed files with 394 additions and 137 deletions
+15 -1
View File
@@ -441,7 +441,21 @@ void
{
DEBUG_STREAM << "[FAIL] Unhandled button mapping (base ConfigureMappableMessageHandler)"
<< std::endl;
Fail("Unhandled button mapping!\n"); // MECHMPPR.CPP:0x7a
//
// Tester guard (the e2c21c4 '&'-gate pattern): under DEBUGOFF Fail()
// is abort() -- ANY aux/zoom button whose L4 override is not yet
// reconstructed KILLED the game on press, and the glass panel / PAD
// bindings make every button one click away. Default: the loud log
// line above + ignore. BT_BUTTON_TRAP=1 restores the authentic hard
// trap (the binary's own base body: push "Unhandled button mapping!"
// + call Fail).
//
static const int s_trap =
(getenv("BT_BUTTON_TRAP") != 0 && *getenv("BT_BUTTON_TRAP") != '0');
if (s_trap)
{
Fail("Unhandled button mapping!\n"); // MECHMPPR.CPP:0x7a
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~