Files
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

238 lines
5.8 KiB
C++

//===========================================================================//
// File: l4app.hpp //
// Project: MUNGA Brick: L4Application //
// Contents: Interface specification for L4Application //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 01/21/95 ECH Initial coding. //
//---------------------------------------------------------------------------//
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide. //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(L4APP_HPP)
# define L4APP_HPP
# if !defined(APP_HPP)
# include <app.hpp>
# endif
class DPLRenderer;
class L4AudioRenderer;
class L4GaugeRenderer;
class L4NetworkManager;
class LBE4ControlsManager;
class L4IcomManager;
//##########################################################################
//######################## L4Application #############################
//##########################################################################
class L4Application:
public Application
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction, Destruction, and Testing
//
public:
L4Application(
ResourceFile *resource_file,
ApplicationID application_ID,
ClassID class_ID=L4ApplicationClassID,
SharedData &shared_data=DefaultData
);
~L4Application();
Logical
TestInstance() const;
static Derivation ClassDerivations;
static SharedData DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Command line parsing
//
public:
typedef Logical
(*TokenParser)(int *argument, int argc, char *argv[]);
static Logical
ParseToken(
int *argument,
int argc,
char *argv[]
);
static Logical
ParseCommandLine(
int argc,
char *argv[],
TokenParser parser = &L4Application::ParseToken
);
static int
GetMissionReviewMode()
{return missionReviewMode;}
static Logical
GetSeeSolids()
{return seeSolids;}
static unsigned long
GetNetworkCommonFlatAddress()
{return networkCommonFlatAddress;}
static CString
GetEggNotationFileName()
{return eggNotationFileName;}
static CString
GetRIOPlaybackFileName()
{return rioPlaybackFileName;}
static CString
GetRIORecordingFileName()
{return rioRecordingFileName;}
protected:
static Logical
seeSolids;
static CString
eggNotationFileName;
static unsigned long
networkCommonFlatAddress;
static int
missionReviewMode;
static CString
rioPlaybackFileName;
static CString
rioRecordingFileName;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Execution control
//
public:
void
Initialize();
void
InitializeTillConsole();
Entity*
MakeAndLinkViewpointEntity(Entity__MakeMessage *message);
Entity*
MakeViewpointEntity(Entity__MakeMessage *message);
void
Terminate();
void
TeslaCoil(Logical lights_on);
void
PilotIllumination(Logical lights_on); // includes 'Tesla coil'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Module accesors
//
public:
DPLRenderer*
GetVideoRenderer();
L4AudioRenderer*
GetAudioRenderer();
L4GaugeRenderer*
GetGaugeRenderer();
L4NetworkManager*
GetNetworkManager()
{return (L4NetworkManager*)Application::GetNetworkManager();}
LBE4ControlsManager*
GetControlsManager()
{return (LBE4ControlsManager*)Application::GetControlsManager();}
L4IcomManager*
GetIntercomManager()
{return (L4IcomManager*)Application::GetIntercomManager();}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Public data
//
public:
char
*divisionParameters;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Module Creation
//
protected:
ModeManager*
MakeModeManager();
ControlsManager*
MakeControlsManager();
IcomManager*
MakeIntercomManager();
NetworkManager*
MakeNetworkManager();
VideoRenderer*
MakeVideoRenderer();
AudioRenderer*
MakeAudioRenderer();
GaugeRenderer*
MakeGaugeRenderer();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Message Support
//
public:
enum
{
LightsOutMessageID = Application::NextMessageID,
NextMessageID
};
static const HandlerEntry
MessageHandlerEntries[];
static MessageHandlerSet
MessageHandlers;
void
LightsOutMessageHandler(Receiver::Message *message);
void
RunMissionMessageHandler(RunMissionMessage *message);
void
StopMissionMessageHandler(StopMissionMessage *message);
void // HACK - the 'int' is actually 'ControlsKey'
KeyCommandMessageHandler(ReceiverDataMessageOf<int> *message);
};
extern L4Application * &l4_application;
//~~~~~~~~~~~~~~~~~~~~~ L4Application inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
inline DPLRenderer*
L4Application::GetVideoRenderer()
{
Check(this);
return (DPLRenderer*)videoRenderer;
}
inline L4AudioRenderer*
L4Application::GetAudioRenderer()
{
Check(this);
return (L4AudioRenderer*)audioRenderer;
}
inline L4GaugeRenderer*
L4Application::GetGaugeRenderer()
{
Check(this);
return (L4GaugeRenderer*)gaugeRenderer;
}
#endif