Files
TeslaRel410/restoration/source410/BT/MECH.CPP
T
CydandClaude Fable 5 e610a2a3aa 4.10 reconstruction: real spawn factory path -> Mech ctor frontier
BTPlayer::CreatePlayerVehicle reconstructed (faithful; BT411's BT_SPAWN_XZ/
BT_SPAWN_ENEMY bring-up scaffolding dropped): builds the Mech::MakeMessage from
the mission game-model resource and hands it to MakeAndLinkViewpointEntity.
Mech::Make = new Mech(creation_message); a staged Mech ctor chains the real
JointedMover base (so the model skeleton/segments stream from BTL4.RES) then
Fails.

This validates the entire spawn factory chain live: CreatePlayerVehicle ->
MakeAndLinkViewpointEntity -> registry -> Mech::Make -> new Mech -> JointedMover
base ctor (streams the mech model) -> halts at the Mech ctor (mech.cpp:66).

The Mech ctor (@004a1674, 5690 bytes -- the largest function in the game) plus
the subsystem roster is the next MAJOR milestone, not a brick: it needs the full
1995 Mech member layout derived first (MECH.HPP is still reserved[331]; BT411's
decomp uses raw offset pokes that can't compile fresh), the subsystem class
hierarchy (only GAUSS/PPC/SENSOR survive in the 4.10 archive; the rest are the
measured "917 missing functions"), and the segment-table walk. Plan + scope in
MECH.NOTES.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:33:15 -05:00

78 lines
2.6 KiB
C++

//===========================================================================//
// File: mech.cpp //
// Project: BattleTech Brick: Entity Manager //
// Contents: Implementation details for the Mech entity //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#include <bt.hpp>
#pragma hdrstop
#if !defined(MECH_HPP)
# include <mech.hpp>
#endif
//
//#############################################################################
//#############################################################################
//
Derivation
Mech::ClassDerivations(
JointedMover::ClassDerivations,
"Mech"
);
Mech::SharedData
Mech::DefaultData(
Mech::ClassDerivations,
JointedMover::MessageHandlers,
JointedMover::AttributeIndex,
33,
(Entity::MakeHandler)Mech::Make
);
//
//#############################################################################
//#############################################################################
//
Mech*
Mech::Make(MakeMessage *creation_message)
{
return new Mech(creation_message);
}
//
//#############################################################################
// Mech ctor -- the heart of the entity (walks the model segment table and
// instantiates the full subsystem roster: power, heat, weapons, actuators,
// controls, tech, damage zones). This is the largest single function in the
// game and the current reconstruction frontier; see MECH.NOTES.md. Chains to
// the JointedMover base so the skeleton/segments stream before it Fails.
//#############################################################################
//
Mech::Mech(
MakeMessage *creation_message,
SharedData &shared_data
):
JointedMover(creation_message, shared_data)
{
Fail("Mech::Mech -- mech.cpp not yet reconstructed");
}
Mech::~Mech()
{
}
void
Mech::SetMappingSubsystem(Subsystem *)
{
Fail("Mech::SetMappingSubsystem -- mech.cpp not yet reconstructed");
}