Files
TeslaRel410/CODE/RP/MUNGA/CONTROLS.TCP
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

304 lines
8.0 KiB
Plaintext

//==========================================================================//
// File: controls.tst //
// Project: MUNGA Brick: COntrols module //
// Contents: Test code for vector classes //
//--------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ----------------------------------------------------------//
// 12/12/94 CPB Initial coding. //
//--------------------------------------------------------------------------//
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//==========================================================================//
#include <controls.thp>
#pragma initialize 34
//
//###########################################################################
//###########################################################################
//
TestControlsManager::TestControlsManager()
: ControlsManager()
{
}
//
//###########################################################################
//###########################################################################
//
TestControlsManager::~TestControlsManager()
{
}
//
//###########################################################################
//###########################################################################
//
void
TestControlsManager::Execute()
{
}
//###########################################################################
//############################# TestReceiver ################################
//###########################################################################
Derivation
TestControlsReceiver::ClassDerivations(
Receiver::ClassDerivations,"TestControlsReceiver1"
);
TestControlsReceiver::SharedData
TestControlsReceiver::DefaultData(
TestControlsReceiver::ClassDerivations,
TestControlsReceiver::MessageHandlers
);
TestControlsReceiver::TestControlsReceiver(
TestControlsReceiver::ClassID class_ID,
TestControlsReceiver::SharedData &shared_data
):
Receiver(class_ID, shared_data)
{
keyStroke = 0;
joystickValue.x = 0.0f;
joystickValue.y = 0.0f;
}
TestControlsReceiver::~TestControlsReceiver()
{
}
void
TestControlsReceiver::KeyboardMessageHandler(
ReceiverDataMessageOf<int> *message
)
{
keyStroke = message->dataContents;
}
void
TestControlsReceiver::JoystickMessageHandler(
ReceiverDataMessageOf<Vector2DOf<Scalar> > *message
)
{
joystickValue = message->dataContents;
}
const Receiver::HandlerEntry
TestControlsReceiver::MessageHandlerEntries[]=
{
{
TestControlsReceiver::KeyboardMessageID,
"Keyboard",
(Receiver::Handler)&TestControlsReceiver::KeyboardMessageHandler
},
{
TestControlsReceiver::JoystickMessageID,
"Joystick",
(Receiver::Handler)&TestControlsReceiver::JoystickMessageHandler
}
};
Receiver::MessageHandlerSet
TestControlsReceiver::MessageHandlers(
ELEMENTS(TestControlsReceiver::MessageHandlerEntries),
TestControlsReceiver::MessageHandlerEntries,
Receiver::MessageHandlers
);
//
//###########################################################################
//###########################################################################
//
Logical
ControlsManager::TestClass()
{
#if 0
Test_Message("Starting ControlsManager test...\n");
unsigned int fakeOwnerID(1);
Vector2DOf<Scalar> vector1(0.0f, 0.0f);
Vector2DOf<Scalar> vector2(1.0f, 2.0f);
Vector2DOf<Scalar> vector3(3.0f, 4.0f);
//
//--------------------------------------------------------
// Test ControlsInstanceDirectOf...
//--------------------------------------------------------
//
{
ControlsInstanceDirectOf< Vector2DOf<Scalar> > *instance1;
instance1 = new ControlsInstanceDirectOf< Vector2DOf<Scalar> >(
fakeOwnerID,&vector1
);
Check(instance1);
Register_Object(instance1);
instance1->Update(&vector2);
Test(vector1 == vector2);
Unregister_Object(instance1);
delete instance1;
}
//
//--------------------------------------------------------
// Test ControlsMappingGroup
//--------------------------------------------------------
//
{
ControlsMappingGroup testGroup;
Check(&testGroup);
ControlsInstanceDirectOf< Vector2DOf<Scalar> > *instance1;
instance1 = new ControlsInstanceDirectOf< Vector2DOf<Scalar> >(
fakeOwnerID,
&vector1
);
Check(instance1);
Register_Object(instance1);
ControlsInstanceDirectOf< Vector2DOf<Scalar> > *instance2;
instance2 = new ControlsInstanceDirectOf< Vector2DOf<Scalar> > (
fakeOwnerID,
&vector2
);
Check(instance2);
Register_Object(instance2);
testGroup.Add(instance1);
testGroup.Add(instance2);
ChainIteratorOf<ControlsInstance>
i(testGroup.instanceList);
ControlsInstance
*controls_instance;
while ((controls_instance=i.ReadAndNext()) != NULL)
{
Check(controls_instance);
}
testGroup.Update(&vector3);
Test(vector1 == vector3);
Test(vector2 == vector3);
Unregister_Object(instance2);
delete instance2;
Unregister_Object(instance1);
delete instance1;
}
//
//--------------------------------------------------------
// Create Receiver
//--------------------------------------------------------
//
TestControlsReceiver *my_receiver;
my_receiver = new TestControlsReceiver();
Check(my_receiver);
Register_Object(my_receiver);
//
//--------------------------------------------------------
// Test ControlsInstanceEventOf...
//--------------------------------------------------------
//
{
int q0, q1;
int testKey = 0;
ControlsInstanceEventOf< int > *instance1;
instance1 = new ControlsInstanceEventOf< int > (
fakeOwnerID,
my_receiver,
TestControlsReceiver::KeyboardMessageID
);
Check(instance1);
Register_Object(instance1);
ControlsInstanceDirectOf< int > *instance2;
instance2 = new ControlsInstanceDirectOf< int > (
fakeOwnerID,
&testKey
);
Check(instance2);
Register_Object(instance2);
Test(my_receiver->keyStroke == 0);
q0 = 1;
instance1->Update(&q0);
application->ProcessAllEvents(); // process posted events
Test(my_receiver->keyStroke == q0);
//
//--------------------------------------------------------
// Test ControlsMappingGroup, again
//--------------------------------------------------------
//
ControlsMappingGroup testGroup;
Check(&testGroup);
testGroup.Add(instance1);
testGroup.Add(instance2);
q1=2;
testGroup.Update(&q1);
application->ProcessAllEvents(); // process posted events
Test(my_receiver->keyStroke == q1);
Test(testKey == q1);
Unregister_Object(instance2);
delete instance2;
Unregister_Object(instance1);
delete instance1;
}
//
//--------------------------------------------------------
// Test ControlsUpdateManager
//--------------------------------------------------------
//
{
ControlsUpdateManager<int> intGroup;
int source = 1;
int dest1 = 0;
int dest2 = 0;
intGroup.Add(0,&dest1);
intGroup.Add(0,&dest2);
intGroup.ForceUpdate(&source);
Test(dest1 == source);
Test(dest2 == source);
intGroup.Remove(0);
dest1 = 0;
dest2 = 0;
intGroup.ForceUpdate(&source);
Test(dest1 == 0);
Test(dest2 == 0);
}
//
//--------------------------------------------------------
// Destroy Receiver
//--------------------------------------------------------
//
Unregister_Object(my_receiver);
delete my_receiver;
//
//--------------------------------------------------------
// Return test result
//--------------------------------------------------------
//
#endif
return True;
}