BattleTech egg builder, catalog, and golden-egg DiffTests (BT port phases 1-2)
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>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
BattleTech data catalog for TeslaConsole (mirror of RedPlanet\RPConfig.xml).
|
||||
|
||||
Reconstructed from the Mac Console 4.10 `Console.ini` BattleTech tree
|
||||
(Adventure::Solo::BattleTech -> Location -> Scenario -> Time/Weather/
|
||||
Experience/Vehicle/Emblem/DropZone/Camo/Patch) and the two console-generated
|
||||
golden eggs (410console/battletech-port/reference/cavern.egg, TESTARN.EGG).
|
||||
|
||||
Wire (egg) mapping of the console fields:
|
||||
scenario -> [mission] scenario= (BOTH Free For All and No Return send "freeforall")
|
||||
map -> [mission] map=
|
||||
time -> [mission] time=
|
||||
weather -> [mission] weather= (temperature is a property of the weather entry)
|
||||
experience-> participant experience=
|
||||
vehicle -> participant vehicle= (the mech)
|
||||
color -> participant color= (this is the CAMO list)
|
||||
patch -> participant patch= (a color-name list, distinct from camo)
|
||||
badge -> participant badge= (the faction EMBLEM)
|
||||
role -> participant role=Role::<key>, plus a [Role::<key>] model=<model> block
|
||||
|
||||
Free For All and No Return differ ONLY by the pilot role (Default vs NoReturn);
|
||||
both emit scenario=freeforall on the wire. Image assets are added in a later
|
||||
phase (the image= attribute is optional; a missing one just shows the name).
|
||||
|
||||
Map-specific restrictions from the Mac ini that this flat model does NOT yet
|
||||
enforce (candidates for a later refinement): Cavern is night-only; Ravines has
|
||||
no "clear" weather (fog/soup only); Polar Missile Base uses 4 drop zones.
|
||||
-->
|
||||
<BattleTech>
|
||||
<freeforall name="Free For All">
|
||||
|
||||
<!-- Pilot skill. key = egg value; name = operator-facing label (Mac STR# 307). -->
|
||||
<experience key="novice" name="Standard" />
|
||||
<experience key="standard" name="Veteran" />
|
||||
<experience key="veteran" name="Expert" />
|
||||
|
||||
<!-- color= : mech camo (Mac BT::Standard::Camo::* tags). -->
|
||||
<color key="Grey" name="Grey" />
|
||||
<color key="White" name="White" />
|
||||
<color key="Black" name="Black" />
|
||||
<color key="Brown" name="Brown" />
|
||||
<color key="Crimson" name="Crimson" />
|
||||
<color key="Green" name="Green" />
|
||||
<color key="Tan" name="Tan" />
|
||||
|
||||
<!-- patch= : team/badge color (Mac BT::Standard::Badge* tags). -->
|
||||
<patch key="Red" name="Red" />
|
||||
<patch key="Yellow" name="Yellow" />
|
||||
<patch key="Blue" name="Blue" />
|
||||
<patch key="Green" name="Green" />
|
||||
<patch key="Grey" name="Grey" />
|
||||
<patch key="Violet" name="Violet" />
|
||||
<patch key="White" name="White" />
|
||||
<patch key="Black" name="Black" />
|
||||
|
||||
<!-- badge= : faction emblem (Mac BT::5DropZone::* emblem tags / STR# 3006). -->
|
||||
<badge key="VGL" name="VGL" />
|
||||
<badge key="Davion" name="Davion" />
|
||||
<badge key="Kurita" name="Kurita" />
|
||||
<badge key="Liao" name="Liao" />
|
||||
<badge key="Marik" name="Marik" />
|
||||
<badge key="Steiner" name="Steiner" />
|
||||
<badge key="None" name="None" />
|
||||
|
||||
<!-- role= : Free For All uses Default, No Return uses NoReturn. model= is the
|
||||
egg value (Mac ini tags dfltrole/noreturn; TESTARN.EGG emitted "noretun"
|
||||
for NoReturn, so that spelling is used as the pod consumed it). -->
|
||||
<role key="Default" model="dfltrole" name="Default" />
|
||||
<role key="NoReturn" model="noretun" name="No Return" />
|
||||
|
||||
</freeforall>
|
||||
|
||||
<!-- Arenas. key = egg map value (Mac tag=); name = Mac STR# 3000 label. -->
|
||||
<map key="arena1" name="Abandoned Arena" />
|
||||
<map key="arena2" name="Destroyed Arena" />
|
||||
<map key="polar3" name="Polar Missile Base" />
|
||||
<map key="polar4" name="Helicopter Base" />
|
||||
<map key="rav" name="Ravines" />
|
||||
<map key="grass" name="Savannah" />
|
||||
<map key="dbase" name="Badlands" />
|
||||
<map key="cavern" name="Cavern" />
|
||||
|
||||
<!-- Mechs. key = egg vehicle value (Mac tag=); name = Mac STR# 3002 label. -->
|
||||
<vehicle key="blkhawk" name="Blackhawk" />
|
||||
<vehicle key="loki" name="Loki" />
|
||||
<vehicle key="bhk1" name="Nova" />
|
||||
<vehicle key="madcat" name="Mad Cat" />
|
||||
<vehicle key="owens" name="Owens" />
|
||||
<vehicle key="thor" name="Thor" />
|
||||
<vehicle key="vulture" name="Vulture" />
|
||||
<vehicle key="avatar" name="Avatar" />
|
||||
<vehicle key="sunder" name="Sunder" />
|
||||
<vehicle key="mad1" name="Timber Wolf" />
|
||||
<vehicle key="ava1" name="Satyr" />
|
||||
<vehicle key="lok1" name="Hellbringer" />
|
||||
<vehicle key="thr1" name="Summoner" />
|
||||
<vehicle key="vul1" name="Maddog" />
|
||||
<vehicle key="own1" name="Kotori" />
|
||||
<vehicle key="snd1" name="Denkou" />
|
||||
<vehicle key="lok2" name="Mischief" />
|
||||
<vehicle key="mad2" name="Zanin Neko" />
|
||||
|
||||
<!-- Time of day (Mac STR# 301 / BT TimeList). -->
|
||||
<time key="morning" name="Morning" />
|
||||
<time key="day" name="Day" />
|
||||
<time key="evening" name="Evening" />
|
||||
<time key="night" name="Night" />
|
||||
|
||||
<!-- Weather. temperature is carried on the weather entry (both known BT weathers
|
||||
report 27 in the Mac ini); it becomes the egg [mission] temperature=. -->
|
||||
<weather key="clear" name="Clear" temperature="27" />
|
||||
<weather key="fog" name="Light Fog" temperature="27" />
|
||||
<weather key="soup" name="Heavy Fog" temperature="27" />
|
||||
|
||||
</BattleTech>
|
||||
Reference in New Issue
Block a user