Files
TeslaRel410/restoration/source410/MUNGA/VDATA.HPP
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

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

344 lines
8.4 KiB
C++

//===========================================================================//
// File: vdata.hh //
// Project: MUNGA Brick: Connection Library //
// Contents: Interface specification for registered classes and virtual data //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- -----------------------------------------------------------//
// 11/03/94 ECH Initial coding. //
// 11/29/94 JMA Changed ClassIdentity to ClassID //
//---------------------------------------------------------------------------//
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(VDATA_HPP)
# define VDATA_HPP
# if !defined(MEMSTRM_HPP)
# include <memstrm.hpp>
# endif
class CString;
class ObjectStream;
class NameList;
typedef unsigned long ObjectID;
const ObjectID NullObjectID = 0;
typedef unsigned long RegisteredClassMemoryAddress;
//##########################################################################
//######################## RegisteredClass ###########################
//##########################################################################
class RegisteredClass SIGNATURED
{
public:
enum ClassID
{
//
//--------------
// Munga classes
//--------------
//
NullClassID = -1,
TrivialClassID = 0,
TrivialPlugClassID,
TrivialNodeClassID,
TrivialComponentClassID,
AttributeWatcherOfClassID,
ReceiverAttributeWatcherOfClassID,
MessageTapClassID,
DerivationClassID,
TrivialReceiverClassID,
EventClassID,
NetworkEventClassID,
GeneralEventQueueClassID,
EventQueueClassID,
DeferredEventQueueClassID,
TrivialModelClassID,
TrivialSubsystemClassID,
TrivialEntityClassID,
NetworkManagerClassID,
EntityManagerClassID,
EntityAttributeHandlerReferenceClassID,
PersistentReferenceClassID,
InterestManagerClassID,
HostManagerClassID,
ControlsInstanceClassID,
ControlsMappingGroupClassID,
ControlsOwnerClassID,
ControlsManagerClassID,
TrivialMoverClassID,
AudioStateTriggerClassID,
AudioMotionScaleClassID,
AudioRendererClassID,
AudioLocationClassID,
ApplicationClassID,
EntityGroupClassID,
GaugeConnectionClassID,
GaugeClassID,
GaugeRendererClassID,
CollisionAssistantClassID,
RendererManagerClassID,
AudioMotionTriggerClassID,
AudioMotionRandomTriggerClassID,
TerrainClassID,
UnscalableTerrainClassID,
AudioControlMixerClassID,
AudioHingeScaleClassID,
AudioControlSmootherClassID,
AudioControlMultiplierClassID,
AudioResourceSelectorClassID,
DropZoneClassID,
ExplosionClassID,
PlayerClassID,
JointSubsystemClassID,
AudioResourceIndexClassID,
AudioScalarScaleClassID,
AudioControlSendClassID,
GaugeEntityListClassID,
DirectControlsInstanceClassID,
EventControlsInstanceClassID,
AudioSampleAndHoldClassID,
AudioScalarTriggerClassID,
AudioEnumerationTriggerClassID,
AudioIntegerTriggerClassID,
AudioLogicalTriggerClassID,
EyeCandyClassID,
WarehouseObjectClassID,
WarehouseBinClassID,
AudioControlsButtonTriggerClassID,
IcomClassID,
IcomManagerClassID,
CameraShipClassID,
CameraDirectorClassID,
ExplosionResourceTableClassID,
ApplicationTaskClassID,
AudioIdleWatcherClassID,
AudioControlEventClassID,
AudioControlSequenceClassID,
AudioControlSplitterClassID,
ApplicationManagerClassID,
DamageZoneClassID,
AudioLFOClassID,
AudioEnumerationDeltaTriggerClassID,
AudioScalarDeltaTriggerClassID,
ControlsStringClassID,
ControlsStringManagerClassID,
AudioEntityClassID,
AudioLevelOfDetailClassID,
LandmarkClassID,
ScenarioRoleClassID,
TeamClassID,
AudioMessageWatcherClassID,
AudioControlsButtonMessageWatcherClassID,
GaugeAlarmManagerClassID,
GaugeAlarmClassID,
LightClassID,
CulturalIconClassID,
DoorFrameClassID,
DoorClassID,
//
//---------------------------------
// Class ID's for Munga LBE classes
//---------------------------------
//
L4AudioLocationClassID = 1000,
DirectPatchSourceClassID,
Dynamic3DPatchSourceClassID,
L4ApplicationClassID,
PatchResourceClassID,
Static3DPatchSourceClassID,
L4AudioCollisionTriggerClassID,
L4GaugeImageManagerClassID,
L4ControlsManagerClassID,
L4IcomClassID,
L4IcomManagerClassID,
PatchLevelOfDetailClassID,
//
//----------------------
// Class ID's for RP
//----------------------
//
RPL4ApplicationClassID = 2000,
VTVClassID,
RivetClassID,
DemolitionPackClassID,
BoosterClassID,
RivetGunClassID,
LaserDrillClassID,
DemolitionPackDropperClassID,
ChuteClassID,
ScoreZoneClassID,
VTVPowerClassID,
ThrusterClassID,
ControlsMapperClassID,
CrusherClassID,
BlockerClassID,
RunnerClassID,
RPDirectorClassID,
RPTeamClassID,
RPPlayerClassID,
//
//------------------
// Class ID's for BT
//------------------
//
BTL4ApplicationClassID = 3000,
MechClassID,
MissileClassID,
MechSubsystemClassID,
HeatableSubsystemClassID,
CondenserClassID,
HeatSinkClassID,
HeatWatcherClassID,
ReservoirClassID,
GeneratorClassID,
PoweredSubsystemClassID,
SensorClassID,
GyroscopeClassID,
TorsoClassID,
MyomersClassID,
CapacitorClassID,
EmitterClassID,
LaserClassID,
ParticleCannonClassID,
AmmoBinClassID,
AmmoFeederClassID,
ProjectileWeaponClassID,
GaussRifleClassID,
BallisticWeaponClassID,
MissileLauncherClassID,
ProjectileClassID,
SeekerClassID,
SubsystemMessageManagerClassID,
PPCClassID,
PowerWatcherClassID,
HUDClassID,
RadarClassID,
SearchlightClassID,
ThermalSightClassID,
BTTeamClassID,
BTPlayerClassID,
BTDirectorClassID,
MechTechClassID,
TurretClassID,
//
//------------------
// Class ID's for ND
//------------------
//
NDL4ApplicationClassID = 4000,
AirplaneClassID,
BulletClassID,
MachineGunClassID,
NDDirectorClassID,
NDTeamClassID,
NDPlayerClassID,
//
//----------------------
// Class ID's for Tools
//----------------------
//
ShapeClassID = 60000,
ShapeGroupListClassID,
ShapeGroupClassID,
ShapePlaneClassID,
ShapePolygonClassID,
ShapeLineClassID,
ShapePointClassID,
VertexReferenceClassID,
VertexClassID,
MaterialLibraryClassID,
MaterialReferenceClassID,
MaterialClassID,
TargaImageClassID,
ShapeListClassID,
SkeletonClassID,
SkeletonJointClassID,
SkeletonSiteClassID,
SkeletonSegmentClassID,
ModelClassID,
//
//---------------------------------
// Class ID's for Munga W4 classes
//---------------------------------
//
W4ApplicationClassID = 70000,
W4ControlsManagerClassID,
//
//-------------
// end of list
//-------------
//
MaxClassID
};
public:
RegisteredClass(ClassID class_id = TrivialClassID);
RegisteredClass(ObjectStream *stream);
virtual ~RegisteredClass();
Logical
TestInstance() const;
public:
ClassID
GetClassID();
static ClassID
GetClassID(const CString &class_name_string);
RegisteredClassMemoryAddress
GetMemoryAddress();
public:
static void
BuildFromPage(
ObjectStream *stream,
NameList *name_list,
ClassID class_ID,
ObjectID object_ID
);
private:
ClassID
classID;
};
//~~~~~~~~~~~~~~~~~~~~~ RegisteredClass inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
inline RegisteredClass::ClassID
RegisteredClass::GetClassID()
{
Check(this);
return classID;
}
inline RegisteredClassMemoryAddress
RegisteredClass::GetMemoryAddress()
{
Check(this);
return (RegisteredClassMemoryAddress)this;
}
inline MemoryStream&
MemoryStream_Read(MemoryStream* stream, RegisteredClass::ClassID *output)
{return stream->ReadBytes(output, sizeof(*output));}
inline MemoryStream&
MemoryStream_Write(MemoryStream* stream, const RegisteredClass::ClassID *input)
{return stream->WriteBytes(input, sizeof(*input));}
#endif