#pragma once //########################################################################### // // btl4console -- the in-process LocalConsole marshal (BT_GLASS only). // // The arcade operator console is just a TCP peer speaking a documented // wire protocol (tools/btconsole.py, constants T2-verified via // BT_NET_PROBE): connect to each pod's -net console port, stream the // mission egg as 1040-byte chunked ReceiveEggFileMessage packets // (NUL-separated lines), wait the settle, send RunMissionMessage twice, // STAY CONNECTED, own the mission clock, and send StopMissionMessage at // expiry. This marshal plays that console from a worker thread over // loopback (and to remote pods when hosting) -- the engine sees a real // connected console and runs the stock ladder; NO engine hooks. // // The thread touches no engine state. At mission end (+grace) it // relaunches the front-end menu (per-mission process relaunch -- the // reconstructed gBT* globals do not survive in-process re-init) and // exits the process. // //########################################################################### // // Start the marshal: egg file path (text form; converted to the NUL wire // image), comma-separated pod console addresses ("127.0.0.1:1501,..."), // and the mission length driving the stop clock. Returns 0 on thread // start. // int BTLocalConsole_Start( const char *egg_path, const char *pod_list, int mission_seconds); // // Relaunch this exe with the given command line (empty = the menu) and // exit the current process. Shared by the marshal's mission-end path and // WinMain's post-mission tail. // void BTFE_RelaunchSelfAndExit(const char *arguments);