Files
TeslaRel410/CODE/BT/MUNGA/LINK.CPP
T
CydandClaude Fable 5 fdd9ac9d97 Initial import: Tesla Release 4.10 (Tesla:BattleTech & Tesla:Red Planet)
Archival snapshot of the Virtual World Entertainment Tesla cockpit
software, 1994-1996: MUNGA engine and L4 pod layer source (Borland
C++ 5.0), BT/RP game code, and game content (models, audio, maps,
gauges, Division renderer data). Includes third-party libraries:
Division dVS/DPL graphics, HMI SOS audio, WATTCP networking.

Files are preserved byte-for-byte (.gitattributes disables all
line-ending conversion). README.md documents the layout, target
hardware, and toolchain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 13:21:58 -05:00

137 lines
4.0 KiB
C++

//===========================================================================//
// File: link.cc //
// Project: MUNGA Brick: Connection Library //
// Contents: Implementation details of base Link //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 09/28/94 ECH Initial coding. //
// 10/20/94 JMA Fixed style stuff. //
// 10/28/94 JMA Made compatible with SGI CC //
// 11/03/94 ECH Made compatible with BC4.0 //
// 12/12/94 ECH Changed release handling //
//---------------------------------------------------------------------------//
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#include <munga.hpp>
#pragma hdrstop
#if !defined(LINK_HPP)
#include <link.hpp>
#endif
#if !defined(PLUG_HPP)
#include <plug.hpp>
#endif
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//#############################################################################
// Link
//#############################################################################
//
Link::Link(
Socket *socket,
Plug *plug
)
{
this->socket = socket;
this->plug = plug;
//
//----------------------------------------------------
// Add this new link to the plugs current set of links
//----------------------------------------------------
//
AddToPlug(plug);
}
//
//#############################################################################
// ~Link
//#############################################################################
//
Link::~Link()
{
//
//-----------------------------------------------------
// Remove this link from the plugs current set of links
//-----------------------------------------------------
//
ReleaseFromPlug();
}
//
//#############################################################################
// TestInstance
//#############################################################################
//
Logical
Link::TestInstance() const
{
Check_Signature(socket);
Check_Signature(plug);
return True;
}
//
//#############################################################################
// ReleaseFromPlug
//#############################################################################
//
void
Link::ReleaseFromPlug()
{
//
//-----------------------------------------------------
// Remove this link from the plugs current set of links
//-----------------------------------------------------
//
Check(plug);
if (plug->linkHead == this)
{
plug->linkHead = nextLink;
}
if (prevLink != NULL)
{
Check(prevLink);
prevLink->nextLink = nextLink;
}
if (nextLink != NULL)
{
Check(nextLink);
nextLink->prevLink = prevLink;
}
prevLink = nextLink = NULL;
}
//
//#############################################################################
// AddToPlug
//#############################################################################
//
void
Link::AddToPlug(Plug *plug)
{
Verify(plug);
Verify_And_Dump(!Is_Signature_Bad(plug),Is_Signature_Bad(plug));\
Verify((plug)->TestInstance());
Verify(Fpu_Ok());
Check_All_Signatures();
// Check(plug);
if ((nextLink = plug->linkHead) != NULL)
{
Check(nextLink);
nextLink->prevLink = this;
}
this->prevLink = NULL;
plug->linkHead = this;
}