LocalConsole: the in-process marshal that ends missions
Domain correction from playtest: hand-fed eggs are a developer shortcut - a mission only ends on a console command, so the clock hits 00:00 and counts up forever. Even single-player games need a console marshal. RPL4CONSOLE is that console. Like the real one it lives on its own thread: it owns the mission clock and raises the stop request at the selected length; the app-manager per-frame hook (new gPerFrameHook seam in APPMGR, called while the application global is live - the loop condition NULLs it on exit, which ate the first attempt) executes the engine-safe part, dispatching the same StopMissionMessage TeslaConsole sent. Final scores flow in through a new RP-layer sink (gConsoleScoreSink in RPCNSL): RPPlayer feeds it the same score it sends a real console at mission end. It also inherits the launcher role: the application tears down after a stop (arcade pods were relaunched per mission by TeslaLauncher), so WinMain respawns the process when the console ended the mission, landing back on the race-setup screen. L4NetworkManager grows FeedLocalEgg (the single-user egg-inject path, callable mid-session) for the future in-process loop. Verified end to end: menu -> 3:00 race -> stop dispatched exactly on time -> final score collected (host 1 = 4113) -> process respawned with the front end up. -egg runs stay unmarshaled (the dev shortcut). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -152,6 +152,7 @@ namespace
|
||||
};
|
||||
|
||||
FEState *gFE = NULL;
|
||||
int gLastMissionSeconds = 0;
|
||||
|
||||
const COLORREF kGreenBright = RGB(64, 255, 64);
|
||||
const COLORREF kGreenDim = RGB(24, 140, 24);
|
||||
@@ -680,6 +681,8 @@ Logical
|
||||
Logical launched = fe.launched;
|
||||
if (launched)
|
||||
{
|
||||
gLastMissionSeconds = kLengths[fe.selection[GroupLength]].seconds;
|
||||
|
||||
GetWindowTextA(fe.nameEdit, fe.pilotName, sizeof(fe.pilotName) - 1);
|
||||
if (fe.pilotName[0] == '\0')
|
||||
{
|
||||
@@ -718,6 +721,12 @@ Logical
|
||||
return launched;
|
||||
}
|
||||
|
||||
int
|
||||
RPL4FrontEnd_LastMissionSeconds()
|
||||
{
|
||||
return gLastMissionSeconds;
|
||||
}
|
||||
|
||||
//########################################################################
|
||||
// Ordinal plasma graphics (verbatim from the console / TEST.EGG)
|
||||
//########################################################################
|
||||
|
||||
Reference in New Issue
Block a user