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:
@@ -496,6 +496,20 @@ void
|
||||
{
|
||||
return;
|
||||
}
|
||||
//
|
||||
// The keypad address space (0x50-0x6F, the vRIO panel's two 4x4 hex
|
||||
// keypads): press emits a keypad KeyEvent -- internal (0x50) on the
|
||||
// pilot unit, external (0x60) on the operator unit; keys have no
|
||||
// release event.
|
||||
//
|
||||
if (unit >= 0x50 && unit <= 0x6F)
|
||||
{
|
||||
if (pressed)
|
||||
{
|
||||
activeInstance->EmitKeypad((unit >= 0x60) ? 1 : 0, unit & 0x0F);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (unit < 0 || unit >= LBE4ControlsManager::ButtonCount)
|
||||
{
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user