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

449 lines
12 KiB
Plaintext

//==========================================================================//
// File: lbe4ctrl.tst //
// Project: MUNGA Brick: LBE4 controls module //
// Contents: Test code for vector classes //
//--------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ----------------------------------------------------------//
// 12/26/94 CPB Initial coding. //
//--------------------------------------------------------------------------//
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//==========================================================================//
#include <stdio.h>
#include <l4ctrl.thp>
//###########################################################################
//############################# TestReceiver ################################
//###########################################################################
#if 0
Derivation
TestControlsReceiver::ClassDerivations(
Receiver::ClassDerivations,"TestControlsReceiver"
);
TestControlsReceiver::SharedData
TestControlsReceiver::DefaultData(
TestControlsReceiver::ClassDerivations,
TestControlsReceiver::MessageHandlers
);
TestControlsReceiver::TestControlsReceiver(
TestControlsReceiver::ClassID class_ID,
TestControlsReceiver::SharedData &shared_data
):
Receiver(class_ID, shared_data)
{
Check_Pointer(this);
keyValue = 0;
buttonValue = 0;
scalarValue = 0.0f;
joystickValue.x = 0.0f;
joystickValue.y = 0.0f;
mouseValue.x = 0;
mouseValue.y = 0;
}
TestControlsReceiver::~TestControlsReceiver()
{
Check(this);
}
void
TestControlsReceiver::KeyboardMessageHandler(
ReceiverDataMessageOf<ControlsKey> *message
)
{
Check(this);
Check_Pointer(message);
keyValue = message->dataContents;
}
void
TestControlsReceiver::ScalarMessageHandler(
ReceiverDataMessageOf<Scalar> *message
)
{
Check(this);
Check_Pointer(message);
scalarValue = message->dataContents;
}
void
TestControlsReceiver::JoystickMessageHandler(
ReceiverDataMessageOf<ControlsJoystick> *message
)
{
Check(this);
Check_Pointer(message);
joystickValue = message->dataContents;
}
void
TestControlsReceiver::ButtonMessageHandler(
ReceiverDataMessageOf<ControlsButton> *message
)
{
Check(this);
Check_Pointer(message);
buttonValue = message->dataContents;
}
void
TestControlsReceiver::MouseMessageHandler(
ReceiverDataMessageOf<ControlsMouse> *message
)
{
Check(this);
Check_Pointer(message);
mouseValue += message->dataContents;
}
const Receiver::HandlerEntry
TestControlsReceiver::MessageHandlerEntries[]=
{
{TestControlsReceiver::KeyboardMessageID,
(Receiver::Handler)&TestControlsReceiver::KeyboardMessageHandler},
{TestControlsReceiver::ScalarMessageID,
(Receiver::Handler)&TestControlsReceiver::ScalarMessageHandler},
{TestControlsReceiver::JoystickMessageID,
(Receiver::Handler)&TestControlsReceiver::JoystickMessageHandler},
{TestControlsReceiver::ButtonMessageID,
(Receiver::Handler)&TestControlsReceiver::ButtonMessageHandler},
{TestControlsReceiver::MouseMessageID,
(Receiver::Handler)&TestControlsReceiver::MouseMessageHandler}
};
Receiver::MessageHandlerSet
TestControlsReceiver::MessageHandlers(
ELEMENTS(TestControlsReceiver::MessageHandlerEntries),
TestControlsReceiver::MessageHandlerEntries,
Receiver::MessageHandlers
);
#endif
//
//###########################################################################
//###########################################################################
//
Logical
LBE4ControlsManager::TestClass()
{
Tell("Starting LBE4ControlsManager test...\n");
#if 0
unsigned int fakeOwnerID(1);
Check(application);
LBE4ControlsManager *controlsManager(
(LBE4ControlsManager *) application->GetControlsManager()
);
Check(controlsManager);
ControlsJoystick vector1;
Check(&vector1);
TestControlsReceiver *my_receiver;
my_receiver = new TestControlsReceiver();
Check(my_receiver);
Register_Object(my_receiver);
ControlsKey directKey = 0;
//
//-------------------------------------------------------------------
// Keyboard test
//-------------------------------------------------------------------
//
controlsManager->
keyboardGroup[LBE4ControlsManager::KeyboardPC].
Add(
fakeOwnerID,
&directKey
);
controlsManager->
keyboardGroup[LBE4ControlsManager::KeyboardPC].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::KeyboardMessageID
);
cout << "Key test: Press any PC keyboard key" <<
" or ENTER to move to next test.\n";
while (my_receiver->keyValue != 0x0D)
{
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
if (my_receiver->keyValue != 0)
{
cout << my_receiver->keyValue << "\n";
Test(directKey == my_receiver->keyValue);
if (my_receiver->keyValue != 0x0D)
{
my_receiver->keyValue = 0;
}
}
}
//
//-------------------------------------------------------------------
// Joystick test
//-------------------------------------------------------------------
//
controlsManager->
joystickGroup[LBE4ControlsManager::JoystickPhysical].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::JoystickMessageID
);
cout << "Joystick test: Press ENTER to end.\n";
cout << "Verify left is positive, backward is positive.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
char buffer[40];
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
sprintf(buffer, "(%-6.5f, %-6.5f)\r",
my_receiver->joystickValue.x,
my_receiver->joystickValue.y
);
cout << buffer;
}
cout << "\n";
cout << "Joystick centering test: 'swizzle' the stick to its limits,\n";
cout << "then center the joystick and press ENTER.\n";
controlsManager->BeginAlignJoystick();
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
}
controlsManager->EndAlignJoystick();
cout << "\n";
cout << "Joystick centering test: verify centered, then press ENTER.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
char buffer[40];
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
sprintf(buffer, "(%-6.5f, %-6.5f)\r",
my_receiver->joystickValue.x,
my_receiver->joystickValue.y
);
cout << buffer;
}
cout << "\n";
//
//-------------------------------------------------------------------
// Scalar test
//-------------------------------------------------------------------
//
controlsManager->
scalarGroup[LBE4ControlsManager::ScalarJoystickX].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ScalarMessageID
);
cout << "Scalar test: Press ENTER to end.\n";
cout << "Value displayed is joystick X axis.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
char buffer[40];
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
sprintf(buffer, "(%-6.5f)\r", my_receiver->scalarValue);
cout << buffer;
}
cout << "\n";
//
//-------------------------------------------------------------------
// Mouse test
//-------------------------------------------------------------------
//
controlsManager->
mouseGroup[0].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::MouseMessageID
);
cout << "Mouse test: Press ENTER to end.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
char buffer[40];
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
sprintf(buffer, "(%-06d, %-06d)\r",
my_receiver->mouseValue.x,
my_receiver->mouseValue.y
);
cout << buffer;
}
cout << "\n";
//
//-------------------------------------------------------------------
// "Virtual" (mouse-driven) joystick test
//-------------------------------------------------------------------
//
ControlsJoystick fakeJoystick;
controlsManager->
joystickGroup[LBE4ControlsManager::JoystickVirtual].
Add(
fakeOwnerID,
&fakeJoystick
);
cout << "Virtual (mouse) joystick test: Press ENTER to end.\n";
cout << "Verify left is positive, backward is positive.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
char buffer[40];
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
sprintf(buffer, "(%-6.5f, %-6.5f)\r",
fakeJoystick.x,
fakeJoystick.y
);
cout << buffer;
}
cout << "\n";
//
//-------------------------------------------------------------------
// Button test
//-------------------------------------------------------------------
//
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickHatUp].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickHatDown].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickHatLeft].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickHatRight].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickTrigger].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickThumbHigh].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickThumbLow].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
controlsManager->
buttonGroup[LBE4ControlsManager::ButtonJoystickPinky].
Add(
fakeOwnerID,
my_receiver,
TestControlsReceiver::ButtonMessageID
);
cout << "Button test: Operate joystick buttons. Press ENTER to end.\n";
my_receiver->keyValue = 0;
while (my_receiver->keyValue != 0x0D)
{
controlsManager->Execute(); // 'manually' call update
application->ProcessAllEvents(); // 'manually' process events
if (my_receiver->buttonValue)
{
switch(my_receiver->buttonValue)
{
case ButtonJoystickHatUp: cout << "Press hat up\n"; break;
case -ButtonJoystickHatUp: cout << "Release hat up\n"; break;
case ButtonJoystickHatDown: cout << "Press hat down\n"; break;
case -ButtonJoystickHatDown: cout << "Release hat down\n"; break;
case ButtonJoystickHatLeft: cout << "Press hat left\n"; break;
case -ButtonJoystickHatLeft: cout << "Release hat left\n"; break;
case ButtonJoystickHatRight: cout << "Press hat right\n"; break;
case -ButtonJoystickHatRight: cout << "Release hat right\n"; break;
case ButtonJoystickTrigger: cout << "Press trigger\n"; break;
case -ButtonJoystickTrigger: cout << "Release trigger\n"; break;
case ButtonJoystickThumbHigh: cout << "Press thumb high\n"; break;
case -ButtonJoystickThumbHigh:cout << "Release thumb high\n"; break;
case ButtonJoystickThumbLow: cout << "Press thumb low\n"; break;
case -ButtonJoystickThumbLow: cout << "Release thumb low\n"; break;
case ButtonJoystickPinky: cout << "Press pinky\n"; break;
case -ButtonJoystickPinky: cout << "Release pinky\n"; break;
}
my_receiver->buttonValue = 0;
}
}
controlsManager->Remove(fakeOwnerID);
Unregister_Object(my_receiver);
delete my_receiver;
#endif
return True;
}