- 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>
344 lines
8.4 KiB
C++
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
|