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>
304 lines
8.0 KiB
Plaintext
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;
|
|
}
|
|
|