Front end: local mission-egg builder + front-end mode (Workstream B foundation)

The core 'single-player without the operator console' capability: a
zero-argument launch now builds its own mission and plays.

- game/reconstructed/btl4fe.{hpp,cpp}: the BattleTech catalog (8 maps,
  8 mechs + variants, colors) and BTFeMission_WriteEgg -- emits the exact
  console egg format (verified against content/MP.EGG): [mission],
  [ordinals] + the 4 static rank-place plasma bitmaps, [pilots],
  per-pilot loadout sections, and [largebitmap]/[smallbitmap] with
  GDI-rendered 128x32 / 64x16 pilot-name plasma bitmaps.
- L4APP.H: SetEggNotationFileName / SetNetworkCommonFlatAddress setters
  (from RP412) so the front end feeds the standard -egg load path.
- btl4main.cpp WinMain: front-end mode -- no -egg and no -net builds
  frontend.egg locally (BTFrontEnd_Run) and boots it. -egg/-net runs
  are untouched.

Verified: no-args launch -> '[frontend] built frontend.egg' -> mission
loads and runs; the generated egg is structurally identical to MP.EGG
(32x32/16x16 name bitmaps with real glyph pixels, all sections present).

Remaining in Phase 5 (deferred): the interactive on-screen catalog menu,
the in-process LocalConsole marshal (mission clock + StopMission at
expiry + single-binary loop), and the score-intake/results screen (new
for BT -- no mission-end flow exists yet). (Phase 5 of the roadmap)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-14 08:44:37 -05:00
co-authored by Claude Fable 5
parent 5ebb9a5906
commit 0faf6a0072
7 changed files with 483 additions and 1 deletions
+25 -1
View File
@@ -106,7 +106,31 @@ pattern). Forked at BT411 `4e72f0c` (2026-07-14).
`NetTransport_Get()`); (2) `BT412_STEAM=ON` config + build (compile-check of the
Steam transport TU against the vendored SDK; a live Steam session needs the Phase 6
lobby + 3 machines).
- Phases 57: Phase 5 (front end + LocalConsole marshal) next.
- **Phase 5 (front end) — FOUNDATION DONE 2026-07-14; marshal/menu/results IN PROGRESS.**
Landed the local **mission-egg builder** — the core "single-player without the
operator console" capability:
- `game/reconstructed/btl4fe.{hpp,cpp}`: catalogs (8 maps, 8 mechs + variants,
colors), a `BTFeMission` config struct, and `BTFeMission_WriteEgg` that emits the
exact console egg format (verified against `content/MP.EGG`): `[mission]`,
`[ordinals]` + the 4 static rank-place plasma bitmaps, `[pilots]`, per-pilot
loadout sections, `[largebitmap]`/`[smallbitmap]` with **GDI-rendered** 128×32 /
64×16 pilot-name plasma bitmaps, and the role models.
- Two engine setters ported from RP412's L4APP.H (`SetEggNotationFileName`,
`SetNetworkCommonFlatAddress`) so the front end feeds the standard `-egg` path.
- `game/btl4main.cpp` WinMain: **front-end mode** — no `-egg` and no `-net` builds
`frontend.egg` locally and points the engine at it (`BTFrontEnd_Run`). `-egg`/`-net`
runs are untouched.
Verified: zero-argument launch → `[frontend] built frontend.egg` → mission loads and
runs (ticks, gait, targeting); the generated egg is structurally identical to MP.EGG
(32×32/16×16 name bitmaps with real glyph pixels, all sections present).
**Remaining in Phase 5** (each substantial, deferred): interactive on-screen catalog
menu (RP412 `RPL4FE` is 1536 lines of render-loop UI); the in-process **LocalConsole
marshal** thread (mission clock + `StopMissionMessage` at expiry + single-binary
menu→race→results→menu loop); and the **score-intake + results screen**, which is
genuinely NEW for BT — BT has no working mission-end flow (mission-review msgID 0x18
is a stub, `scoreAward=0`); v1 should collect kills/deaths from the live Comm-MFD
`pilotList` tally at stop (see [[gauges-hud]], [[multiplayer]]).
- Phases 67: Steam lobby (`btl4lobby`) + packaging remain.
## The seams (what plugs in where) [T0 unless noted]