Completes the BattleTech console feature to parity with Red Planet:
- BTPrintDocument: the per-pilot landscape score sheet (mech portrait,
placing, kill/death/damage stats, randomized mission-highlights narrative,
pilot-vs-pilot damage matrix, place-over-time chart), mirroring
RPPrintDocument minus the football/lap/boost/score-zone concepts. Wired into
BTGame (Auto Print checkbox + Print Last Mission button) and the shell's File
menu (BT Mission Print Preview / Print BT Mission, loading .btm files).
- BTStrings(.xml): the BT mission-highlight narrative pools (damage tiers,
kill, death-without-honor, recap), loaded from BattleTech\BTStrings.xml like
RPStrings.
- BTDefaultsDialog: two-column (Free For All / No Return) editor for the BT
operator defaults, reachable from Settings (Change/Import/Export BattleTech
Defaults). Verified via UI Automation: opens with all 18 option combos
populated.
- Apps.xml: the BattleTech 4.11 product (btl4.exe on the shared RP411 engine,
same -net/-res/-lc/-mr command line; deploys to C:\Games\BT411) with Game
Client / Live Camera / Mission Review launch entries. CatalogTests updated to
4 products / 8 entries plus the three new BT entry assertions.
Role model spelling corrected to "noreturn": the Mac Console.ini tag and the
game's BTL4.RES role resource are dfltrole/NoReturn; the 4.10 console's eggs
emitted a broken "noretun" that cannot resolve against the RES. BTGoldenEggTests
and BTConfig.xml updated accordingly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
BTGame mirrors RPGame - same GameStateData/state-machine/NetworkScan engine
driving each pod's MungaGame (take ownership, stream egg on WaitingForEgg,
Run/Abort/Stop, countdown) - with the BT differences: ApplicationID.BTL4, a
pilots grid carrying Mech/Camo/Patch/Badge/Experience, an Advanced Damage
checkbox in place of RP's Score Compression, and the Mech* in-match messages
recorded via BTMissionRecorder into BTMissionResults (.btm, gzip +
BinaryFormatter like .rpm; scores are 1000-based like RP). Free For All and
No Return share the pane; the mode selects the pilots' role. BTDefaults
persists per-mode operator defaults to BTDefaults.btd (no dialog yet).
RPGame's dead decompile members (sStopToIdleStates, IsAllPodsAppState) were
not carried over.
TeslaConsoleForm no longer assumes RP: the "AppID != 0 -> Pod Not Running RP"
check becomes a GameTag map (RPL4 -> RP, BTL4 -> BT, otherwise Unknown Pod
Application) feeding the per-game status strings, and the Games menu gains
BattleTech: Free For All / No Return.
Deferred to phase 4: mech/arena art, BT defaults dialog, BT score-sheet
print document, Apps.xml BT411 product, live-pod verification.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New TeslaConsole.BattleTech namespace mirroring TeslaConsole.RedPlanet's
mission layer: BTMission/BTFreeForAllMission (egg serializer; RP wire framing
and ordinal bitmaps reused verbatim), BTParticipant/BTPlayer/BTCamera (BT
participant fields: advancedDamage, experience, vehicleValue, patch, role),
and the BTConfig/BTScenario/BTMap/BTVehicle/BTWeather/BTRole catalog loaded
from BattleTech\BTConfig.xml (reconstructed from the Mac Console 4.10 ini BT
tree). Free For All and No Return share one mission class - both send
scenario=freeforall; the mode is the role assigned to each pilot.
BTGoldenEggTests (7 tests, recovered-only) diff the generated egg
field-by-field against two eggs captured from the original consoles
(cavern.egg, TESTARN.EGG): order-independent per-section compare with
font-rendered bitmap pixel rows excluded, ordinal art byte-exact vs
TESTARN.EGG, EggFileMessage framing reassembly, role de-dup, No Return role
semantics, and shipped-catalog contents. Invoker gains BTEggString/
BTEggFraming reflection cases.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>