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>
36 lines
1.0 KiB
C#
36 lines
1.0 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace TeslaConsole.BattleTech;
|
|
|
|
/// <summary>
|
|
/// A spectator / mission-review station. Mirrors <c>RPCamera</c>: a non-combatant
|
|
/// participant that occupies a pilot slot but is not a mech. No BT camera golden
|
|
/// egg exists, so the field set follows the Red Planet camera block (minus the
|
|
/// RP-only football <c>team=</c> field) and should be confirmed against a live BT
|
|
/// pod when one is available.
|
|
/// </summary>
|
|
[Serializable]
|
|
internal class BTCamera : BTParticipant
|
|
{
|
|
public BTCamera(string podHostAddress, HostType hostType)
|
|
: base(podHostAddress, hostType)
|
|
{
|
|
if (hostType != HostType.MissionReviewHostType)
|
|
{
|
|
throw new ArgumentOutOfRangeException("hostType");
|
|
}
|
|
}
|
|
|
|
protected sealed override void AppendParticipantSpecificData(int index, StringBuilder sb)
|
|
{
|
|
sb.Append("loadzones=0\n");
|
|
sb.Append("name=Camera\n");
|
|
sb.AppendFormat("bitmapindex={0}\n", index);
|
|
sb.Append("vehicle=camera\n");
|
|
sb.Append("badge=None\n");
|
|
sb.Append("dropzone=one\n");
|
|
sb.Append("color=Black\n");
|
|
}
|
|
}
|