In-game front end: race setup menu builds the mission egg locally

Starting without -egg, -net, or -mr now boots a race-setup screen
(RP_L4/RPL4FE.cpp) instead of aborting: track / vehicle / color / badge
/ time-of-day / weather / race length plus pilot name, populated from
TeslaConsole''s RPConfig.xml catalog (Death Race scenario). LAUNCH
builds the egg exactly as the console did - the RPMission.ToEggString
port, including the pilot name pre-rendered to 1bpp plasma bitmaps
(128x32 + 64x16) via GDI with the console''s auto-shrink font logic and
the verbatim ordinal graphics - writes frontend.egg, and injects it
into the standard egg-load path (new L4Application::
SetEggNotationFileName).

The menu is a GDI child of the main window (pod green-on-black, double
buffered, mouse driven, EDIT control for the name) running a modal loop
before engine init; closing the window exits cleanly. Found and fixed
along the way: the empty egg CString holds a NULL representation
(operator! is the safe emptiness test), and the modal loop needed a
queue nudge for launch clicks delivered via SendMessage.

Verified end to end: boot -> menu -> LAUNCH -> generated egg (7.5KB) ->
racing in the 1080p cockpit with score and mission clock running.
start-windowed.bat now boots into the front end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-12 16:20:05 -05:00
co-authored by Claude Fable 5
parent f842425452
commit 58eb25a792
8 changed files with 947 additions and 3 deletions
+12
View File
@@ -77,6 +77,18 @@ so press-feedback works like the real button field.
## Workstream B — In-game sessions (from TeslaConsole)
-**Single-player front end landed** (2026-07-12): starting without
`-egg`/`-net` boots a race-setup menu (`RP_L4/RPL4FE.cpp`) — track /
vehicle / color / badge / time / weather / length + pilot name from the
console's catalog — which builds the mission egg locally (full
`RPMission.ToEggString` port incl. GDI-rendered plasma name bitmaps)
and feeds the standard egg-load path. Verified end to end: menu →
LAUNCH → generated egg → racing in the cockpit.
- See [RP412-FRONTEND-DESIGN.md](RP412-FRONTEND-DESIGN.md) for the
TeslaConsole control-code analysis and the Steam lobby mapping this
builds toward (lobby owner = console, SteamID list = pilot list,
Steam-sockets mesh = the egg's connect/listen ordering).
Consumer players get no operator. The create/configure/launch flow that
TeslaConsole drives over TCP 1501 becomes in-game UI: