Assemble the whole cockpit in a single window

The main game window becomes the cockpit shell (enlarged, clipping
children); every display folds in as a chrome-less child pane in the
pod interior arrangement:

  [ MFD UL ] [ MFD UC ] [ MFD UR ]
  [ plasma (reduced) ][ viewscreen (centered) ]
  [ MFD LL ] [   Map  ] [ MFD LR ]

The 3D scene presents into a black STATIC viewscreen child via
Present's hDestWindowOverride (new gMainPresentWindow global) - no
swap-chain changes, and STATIC's transparent hit-testing keeps mouse
input over the 3D view flowing to the game window. MFDSplitView gains a
parent/child mode; PlasmaScreen::Position reparents the glass into the
shell. Main window class background goes black for the cockpit gaps.

Verified by screenshot: live green gauges (LIFT CUT / BOOST / CHUTE /
trigger-program screens) with their red button strips, the 3D canyon in
the centered viewscreen, plasma score glass at its left, map with lit
amber preset lamps - one window, 976x1132 client at 50% scale.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-12 14:52:26 -05:00
co-authored by Claude Fable 5
parent 775ee130a7
commit aa24968c3d
12 changed files with 222 additions and 96 deletions
+21 -11
View File
@@ -114,17 +114,27 @@ Two new environment options remove the hardware dependency entirely:
desktop window ("Plasma Display", plasma orange, `L4PLASMASCALE` sets the
pixel size, default 4). It opens directly below the main view;
`L4PLASMAPOS=x,y` overrides. No COM port. Closing the window hides it.
- **`L4MFDSPLIT=1`** — un-packs the 7-display cockpit. The pod hardware
drove five monochrome MFDs from the color channels of two video outputs
(window 3 = upper MFDs in R/G/B, window 4 = lower MFDs in R/G) and
mounted the map display portrait. With split mode the game itself opens
seven proper windows — main view, five green-screen MFDs ("MFD upper
left/center/right", "MFD lower left/right") and the 90°-rotated "Map" —
rendered CPU-side from the shared gauge canvas; the packed windows stay
hidden. `L4MFDSCALE` sets the view size in percent of the gauge canvas
(default 50). Default layout is the pod grid to the right of the main
view; all windows are draggable. This replaces the external
BitBlt-mirror launcher wrapper.
- **`L4MFDSPLIT=1`** — assembles the **whole pod interior in one window**.
The pod hardware drove five monochrome MFDs from the color channels of
two video outputs (window 3 = upper MFDs in R/G/B, window 4 = lower
MFDs in R/G) and mounted the map display portrait. In split mode the
main game window becomes the cockpit shell and every display is a
chrome-less child pane, arranged as in the pod:
```
[ MFD UL ] [ MFD UC ] [ MFD UR ]
[ plasma (reduced) ][ viewscreen (centered) ]
[ MFD LL ] [ Map ] [ MFD LR ]
```
MFDs render green-screen and the map full-color/rotated, CPU-side from
the shared gauge canvas (the packed D3D windows stay hidden); the 3D
scene presents into the viewscreen pane via `Present`'s
`hDestWindowOverride` (`gMainPresentWindow`), so no swap-chain changes.
Mouse clicks over the viewscreen fall through to the game window
(STATIC pane hit-test transparency). `L4MFDSCALE` sets the MFD/map pane
size in percent of the gauge canvas (default 50). This replaces the
external BitBlt-mirror launcher wrapper.
Each split window also carries its display's **physical button bank**
(geometry per vRIO's `CockpitLayout`): 4 red buttons above and below