Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
761 lines
22 KiB
C++
761 lines
22 KiB
C++
//===========================================================================//
|
|
// File: MW4.cpp //
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 09/09/98 JSE Inital base class based off of Shadowrun/Adept //
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1998, Fasa Interactive //
|
|
// All Rights reserved worldwide //
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
#include "MW4Headers.hpp"
|
|
#include "MWVideoRenderer.hpp"
|
|
#include "MWApplication.hpp"
|
|
#include "MWMission.hpp"
|
|
#include "MWMover.hpp"
|
|
#include "Vehicle.hpp"
|
|
#include "VehicleInterface.hpp"
|
|
#include "MWPlayer.hpp"
|
|
#include "Subsystem.hpp"
|
|
#include "Mech.hpp"
|
|
#include "Engine.hpp"
|
|
#include "NavPoint.hpp"
|
|
#include "Weapon.hpp"
|
|
#include "WeaponMover.hpp"
|
|
#include "BeamWeapon.hpp"
|
|
#include "Decal.hpp"
|
|
#include "Torso.hpp"
|
|
#include "BeamEntity.hpp"
|
|
#include "MW4AnimationSystem.hpp"
|
|
#include "AnimationState.hpp"
|
|
#include "Building.hpp"
|
|
#include "bridge.hpp"
|
|
#include "ProjectileWeapon.hpp"
|
|
#include "Turret.hpp"
|
|
#include "Missile.hpp"
|
|
#include "MissileWeapon.hpp"
|
|
#include "SRMWeaponSubsystem.hpp"
|
|
#include "LRMWeaponSubsystem.hpp"
|
|
#include "MRMWeaponSubsystem.hpp"
|
|
#include "SSRMWeaponSubsystem.hpp"
|
|
#include "combatai.hpp"
|
|
#include "shooterai.hpp"
|
|
#include "mech_ai.hpp"
|
|
#include "rail_move.hpp"
|
|
#include "playerai.hpp"
|
|
#include "MWEntityManager.hpp"
|
|
#include "GUIWeaponManager.hpp"
|
|
#include "Narc.hpp"
|
|
#include "NarcWeaponSubsystem.hpp"
|
|
#include "Sensor.hpp"
|
|
#include "Beagle.hpp"
|
|
#include "ECM.hpp"
|
|
#include "Path.hpp"
|
|
#include "objective.hpp"
|
|
#include "MWDamageObject.hpp"
|
|
#include "StickyMover.hpp"
|
|
#include "FlareWeapon.hpp"
|
|
#include "MWObject.hpp"
|
|
#include "cultural.hpp"
|
|
#include "Airplane.hpp"
|
|
#include "PlaneAI.hpp"
|
|
#include "Helicopter.hpp"
|
|
#include "AirplaneAnimationStateEngine.hpp"
|
|
#include "BombWeaponSubsystem.hpp"
|
|
#include "EffectGenerator.hpp"
|
|
#include "VOEntity.hpp"
|
|
#include "CameraShip.hpp"
|
|
#include "HeatManager.hpp"
|
|
#include "HeatSink.hpp"
|
|
#include "LongTomWeapon.hpp"
|
|
#include "AMS.hpp"
|
|
#include "FlamerWeapon.hpp"
|
|
#include "FlameMover.hpp"
|
|
#include "ArtilleryMark.hpp"
|
|
#include "ArtilleryWeapon.hpp"
|
|
#include "BombastWeapon.hpp"
|
|
#include "DeathEntity.hpp"
|
|
#include "dropship.hpp"
|
|
#include "SearchLight.hpp"
|
|
#include "LightEntity.hpp"
|
|
#include "Explosive.hpp"
|
|
#include "HighExplosiveWeapon.hpp"
|
|
#include "JumpJet.hpp"
|
|
#include "GUILightAmp.hpp"
|
|
#include "GUIStaticView.hpp"
|
|
#include "mwmap.hpp"
|
|
#include "HoverCraft.hpp"
|
|
#include "Tank.hpp"
|
|
#include "Truck.hpp"
|
|
#include "noncomai.hpp"
|
|
#include "noncom.hpp"
|
|
#include "Armor.hpp"
|
|
#include "Gyro.hpp"
|
|
#include "EyePointManager.hpp"
|
|
#include "lancemate.hpp"
|
|
#include "MFB.hpp"
|
|
#include "AI_Statistics.hpp"
|
|
#include "Salvage.hpp"
|
|
#include "boat.hpp"
|
|
#include "LBXMover.hpp"
|
|
#include "WaterCultural.hpp"
|
|
#include "flag.hpp"
|
|
#include "ObservationVehicle.hpp"
|
|
#include "MWCampaign.hpp"
|
|
#include "LBXWeaponSub.hpp"
|
|
#include "Team.hpp"
|
|
#include "hudcomp.hpp"
|
|
#include "field_base.hpp"
|
|
|
|
// MSL 5.02 SubSystems
|
|
//#include "EnhancedOptics.hpp"
|
|
#include "IFF_Jammer.hpp"
|
|
#include "AdvancedGyro.hpp"
|
|
//#include "ArrowWeaponSubsystem.hpp"
|
|
|
|
// MSL 5.03 RTX
|
|
//#include "RTXWeaponSub.hpp"
|
|
|
|
void InitComFuncs (void);
|
|
void KillComFuncs (void);
|
|
|
|
// úè - start
|
|
typedef long LONG;
|
|
typedef struct DIJOYSTATE {
|
|
LONG lX;
|
|
LONG lY;
|
|
LONG lZ;
|
|
LONG lRx;
|
|
LONG lRy;
|
|
LONG lRz;
|
|
LONG rglSlider[2];
|
|
DWORD rgdwPOV[4];
|
|
BYTE rgbButtons[32];
|
|
} DIJOYSTATE, *LPDIJOYSTATE;
|
|
|
|
extern int g_bUseOrgJoy;
|
|
extern void (__stdcall *g_pfnRIO_Joy)(DIJOYSTATE& js);
|
|
extern void (__stdcall *g_pfnRIO_ButtonEvent)(BYTE* by);
|
|
extern void __stdcall RIO_Joy(DIJOYSTATE& js);
|
|
extern void __stdcall RIO_ButEvent(BYTE* by);
|
|
|
|
// úè - end
|
|
|
|
namespace MW4AI
|
|
{
|
|
extern DWORD Obstacle_Size;
|
|
}
|
|
|
|
HGOSHEAP
|
|
MechWarrior4::Heap = NULL,
|
|
MechWarrior4::g_LibraryHeap = NULL;
|
|
|
|
Scalar
|
|
MechWarrior4::g_Gravity = 9.8f;
|
|
|
|
#if 0
|
|
extern bool g_AbzugFlag; // true if abzug is running the game
|
|
bool s_NoAbzug = false;
|
|
#endif
|
|
|
|
namespace ABL
|
|
{
|
|
extern bool g_MissionMusic;
|
|
}
|
|
|
|
|
|
#define SKIPPY_CAST(Type,var) (*((Type*)&(var)))
|
|
|
|
|
|
int MechWarrior4::ENCRYPT (int value)
|
|
|
|
{
|
|
return value ^ CODE_KEY;
|
|
}
|
|
|
|
int MechWarrior4::DECRYPT (int value)
|
|
|
|
{
|
|
return value ^ CODE_KEY;
|
|
}
|
|
|
|
Stuff::Scalar MechWarrior4::ENCRYPT (Stuff::Scalar value)
|
|
{
|
|
DWORD cast = SKIPPY_CAST( DWORD , value );
|
|
cast = cast ^ CODE_KEY;
|
|
return SKIPPY_CAST( Stuff::Scalar , cast );
|
|
}
|
|
|
|
Stuff::Scalar MechWarrior4::DECRYPT (Stuff::Scalar value)
|
|
{
|
|
DWORD cast = SKIPPY_CAST( DWORD , value );
|
|
cast = cast ^ CODE_KEY;
|
|
return SKIPPY_CAST( Stuff::Scalar , cast );
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
MechWarrior4::InitializeClasses(Stuff::NotationFile *startup_ini)
|
|
{
|
|
// úè - start
|
|
if (g_bUseOrgJoy)
|
|
g_pfnRIO_Joy = NULL;
|
|
else
|
|
g_pfnRIO_Joy = RIO_Joy;
|
|
g_pfnRIO_ButtonEvent = RIO_ButEvent;
|
|
// úè - end
|
|
|
|
Verify(!g_LibraryHeap);
|
|
g_LibraryHeap = gos_CreateMemoryHeap("MechWarrior4(All)");
|
|
Check_Pointer(g_LibraryHeap);
|
|
|
|
Verify(!Heap);
|
|
Heap = gos_CreateMemoryHeap("MW4 Heap", 0, g_LibraryHeap);
|
|
Check_Pointer(Heap);
|
|
|
|
#if !defined(NO_TIMERS)
|
|
StatisticFormat("");
|
|
StatisticFormat("MW4");
|
|
StatisticFormat("===");
|
|
StatisticFormat("");
|
|
#endif
|
|
|
|
gos_PushCurrentHeap(Heap);
|
|
|
|
InitComFuncs ();
|
|
|
|
Verify(FirstFreeMW4ClassID <= LastMW4ClassID);
|
|
|
|
// initialize classes
|
|
HUDComponent::InitializeClass ();
|
|
MWMap::InitializeClass();
|
|
MW4Animation::AnimInstanceManager::InitializeClass();
|
|
MW4Animation::BlendBuffer::InitializeClass();
|
|
MW4Animation::AnimHierarchyNode::InitializeClass();
|
|
AnimationStateEngine::InitializeClass();
|
|
MechAnimationStateEngine::InitializeClass();
|
|
AirplaneAnimationStateEngine::InitializeClass();
|
|
MWMission::InitializeClass();
|
|
MWMover::ExecutionStateEngine::InitializeClass();
|
|
MWMover::InitializeClass();
|
|
MWObject::InitializeClass();
|
|
Cultural::InitializeClass ();
|
|
Vehicle::ExecutionStateEngine::InitializeClass();
|
|
Vehicle::InitializeClass();
|
|
VehicleInterface::ExecutionStateEngine::InitializeClass();
|
|
VehicleInterface::InitializeClass();
|
|
MWPlayer::InitializeClass();
|
|
Subsystem::ExecutionStateEngine::InitializeClass();
|
|
Subsystem::InitializeClass();
|
|
Mech::ExecutionStateEngine::InitializeClass();
|
|
Mech::InitializeClass();
|
|
Engine::InitializeClass();
|
|
Weapon::InitializeClass();
|
|
WeaponMover::InitializeClass();
|
|
BeamWeapon::ExecutionStateEngine::InitializeClass();
|
|
BeamWeapon::InitializeClass();
|
|
Decal::InitializeClass();
|
|
Torso::InitializeClass();
|
|
BeamEntity::InitializeClass();
|
|
NonCom::InitializeClass();
|
|
Building::InitializeClass();
|
|
Bridge::InitializeClass();
|
|
ProjectileWeapon::ExecutionStateEngine::InitializeClass();
|
|
ProjectileWeapon::InitializeClass();
|
|
Turret::InitializeClass();
|
|
Missile::ExecutionStateEngine::InitializeClass();
|
|
Missile::InitializeClass();
|
|
MissileWeapon::InitializeClass();
|
|
SRMWeaponSubsystem::InitializeClass();
|
|
LRMWeaponSubsystem::InitializeClass();
|
|
MRMWeaponSubsystem::InitializeClass();
|
|
SSRMWeaponSubsystem::InitializeClass();
|
|
NavPoint::InitializeClass();
|
|
Flag::InitializeClass();
|
|
LancemateManager::InitializeClass();
|
|
AI::InitializeClass();
|
|
MW4AI::CRailGraph::InitializeClass ();
|
|
MW4AI::CPathManager::InitializeClass ();
|
|
MoverAI::InitializeClass ();
|
|
NonComAI::InitializeClass ();
|
|
CombatAI::InitializeClass();
|
|
MechAI::InitializeClass ();
|
|
ShooterAI::InitializeClass ();
|
|
PlayerAI::ExecutionStateEngine::InitializeClass();
|
|
PlayerAI::InitializeClass ();
|
|
GUIWeapon::InitializeClass();
|
|
MWApplication::InitializeClass();
|
|
MWEntityManager::InitializeClass();
|
|
MWVideoRenderer::InitializeClass();
|
|
StickyMover::ExecutionStateEngine::InitializeClass();
|
|
StickyMover::InitializeClass();
|
|
Narc::InitializeClass();
|
|
NarcWeapon::InitializeClass();
|
|
Sensor::ExecutionStateEngine::InitializeClass();
|
|
Sensor::InitializeClass();
|
|
Beagle::InitializeClass();
|
|
ECM::InitializeClass();
|
|
Path::InitializeClass();
|
|
Objective::ExecutionStateEngine::InitializeClass();
|
|
Objective::InitializeClass();
|
|
MWInternalDamageObject::InitializeClass();
|
|
FlareWeapon::InitializeClass();
|
|
Airplane::ExecutionStateEngine::InitializeClass();
|
|
Airplane::InitializeClass();
|
|
PlaneAI::InitializeClass();
|
|
Helicopter::InitializeClass();
|
|
Dropship::ExecutionStateEngine::InitializeClass();
|
|
Dropship::InitializeClass();
|
|
BombWeaponSubsystem::InitializeClass();
|
|
EffectGenerator::InitializeClass();
|
|
VOEntity::InitializeClass();
|
|
CameraShip::ExecutionStateEngine::InitializeClass();
|
|
CameraShip::InitializeClass();
|
|
HeatManager::InitializeClass();
|
|
HeatSink::InitializeClass();
|
|
LongTomWeaponSubsystem::InitializeClass();
|
|
AMS::InitializeClass();
|
|
FlameMover::InitializeClass();
|
|
FlamerWeapon::InitializeClass();
|
|
ArtilleryMark::InitializeClass();
|
|
ArtilleryWeapon::InitializeClass();
|
|
BombastWeapon::ExecutionStateEngine::InitializeClass();
|
|
BombastWeapon::InitializeClass();
|
|
DeathEntity::InitializeClass();
|
|
LightEntity::InitializeClass();
|
|
SearchLight::InitializeClass();
|
|
Explosive::InitializeClass();
|
|
HighExplosiveWeapon::InitializeClass();
|
|
JumpJet::ExecutionStateEngine::InitializeClass();
|
|
JumpJet::InitializeClass();
|
|
Hovercraft::InitializeClass();
|
|
Tank::InitializeClass();
|
|
Truck::InitializeClass();
|
|
Boat::InitializeClass();
|
|
Armor::InitializeClass();
|
|
Gyro::InitializeClass();
|
|
EyePointManager::InitializeClass();
|
|
MFB::ExecutionStateEngine::InitializeClass();
|
|
MFB::InitializeClass();
|
|
FieldBase::ExecutionStateEngine::InitializeClass();
|
|
FieldBase::InitializeClass();
|
|
SalvageManager::InitializeClass();
|
|
|
|
// MSL 5.02 SubSystems
|
|
AdvancedGyro::InitializeClass();
|
|
// ArrowWeaponSubsystem::InitializeClass();
|
|
// EnhancedOptics::InitializeClass();
|
|
IFF_Jammer::InitializeClass();
|
|
|
|
// MSL 5.03 RTX
|
|
// RTXWeaponSub::ExecutionStateEngine::InitializeClass();
|
|
// RTXWeaponSub::InitializeClass();
|
|
|
|
|
|
LBXMover::InitializeClass();
|
|
WaterCultural::InitializeClass();
|
|
ObservationVehicle::InitializeClass();
|
|
MWCampaign::InitializeClass();
|
|
LBXWeaponSub::InitializeClass();
|
|
Team::InitializeClass();
|
|
|
|
// GUILightAmp::InitializeClass();
|
|
|
|
|
|
if (startup_ini)
|
|
{
|
|
Check_Object(startup_ini);
|
|
Page *page = startup_ini->FindPage("Network Options");
|
|
if (page)
|
|
{
|
|
Check_Object(page);
|
|
const char *text = NULL;
|
|
|
|
if (page->GetEntry("ConnectionType", &text))
|
|
{
|
|
MString string = text;
|
|
|
|
if (!stricmp(text,"modem"))
|
|
{
|
|
MWApplication::MyConnectionType = MWApplication::Modem;
|
|
}
|
|
else if (!stricmp(text,"isdn"))
|
|
{
|
|
MWApplication::MyConnectionType = MWApplication::ISDN;
|
|
}
|
|
else if (!stricmp(text,"xdsl"))
|
|
{
|
|
MWApplication::MyConnectionType = MWApplication::xDSL;
|
|
}
|
|
else if (!stricmp(text,"cable"))
|
|
{
|
|
MWApplication::MyConnectionType = MWApplication::Cable;
|
|
}
|
|
else if (!stricmp(text,"lan"))
|
|
{
|
|
MWApplication::MyConnectionType = MWApplication::LAN;
|
|
}
|
|
}
|
|
|
|
text = NULL;
|
|
|
|
if (page->GetEntry("ConnectionSpeed", &text))
|
|
{
|
|
MString string = text;
|
|
if (!stricmp(text,"14"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_14_4kbps;
|
|
}
|
|
else if (!stricmp(text,"28"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_28_8kbps;
|
|
}
|
|
else if (!stricmp(text,"56"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_56_6kbps;
|
|
}
|
|
else if (!stricmp(text,"64"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_64_kbps;
|
|
}
|
|
else if (!stricmp(text,"128"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_128_kbps;
|
|
}
|
|
else if (!stricmp(text,"384"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_384_kbps;
|
|
}
|
|
else if (!stricmp(text,"768"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_768_kbps;
|
|
}
|
|
else if (!stricmp(text,"1500"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_1500_kbps;
|
|
}
|
|
else if (!stricmp(text,"10000"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_10_Mbps;
|
|
}
|
|
else if (!stricmp(text,"100000"))
|
|
{
|
|
MWApplication::MyConnectionSpeed = MWApplication::c_100_Mbps;
|
|
}
|
|
}
|
|
|
|
page->GetEntry("PacketSize", &MWApplication::DefaultPacketSize);
|
|
|
|
Network::DefaultPacketSize = MWApplication::DefaultPacketSize;
|
|
|
|
Max_Clamp(Network::DefaultPacketSize, 1024);
|
|
Min_Clamp(Network::DefaultPacketSize, 128);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if (startup_ini)
|
|
{
|
|
Check_Object(startup_ini);
|
|
Page *page = startup_ini->FindPage("Graphics Options");
|
|
if (page)
|
|
{
|
|
Check_Object(page);
|
|
page->GetEntry("NoBlend", &Mech::DontLoadBlends);
|
|
}
|
|
}
|
|
|
|
if (startup_ini)
|
|
{
|
|
Check_Object(startup_ini);
|
|
Page *page = startup_ini->FindPage("Graphics Options");
|
|
if (page)
|
|
{
|
|
Check_Object(page);
|
|
page->GetEntry("MissionMusic", &ABL::g_MissionMusic);
|
|
}
|
|
}
|
|
|
|
|
|
#if !defined(NO_STATS)
|
|
StatisticFormat("");
|
|
StatisticFormat("Mission Entity Counts");
|
|
StatisticFormat("=====================");
|
|
StatisticFormat("");
|
|
|
|
AddStatistic("Executed Buildings", "buildings", gos_DWORD, &Executed_Building_Count, Stat_AutoReset);
|
|
AddStatistic("Executed Vehicles", "vehicles", gos_DWORD, &Executed_Vehicle_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Mechs", "vehicles", gos_DWORD, &Executed_Mech_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Tanks", "vehicles", gos_DWORD, &Executed_Tank_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Trucks", "vehicles", gos_DWORD, &Executed_Truck_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Boats", "vehicles", gos_DWORD, &Executed_Boat_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed MFBs", "vehicles", gos_DWORD, &Executed_MFB_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Hovercraft", "vehicles", gos_DWORD, &Executed_Hovercraft_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Airplanes", "vehicles", gos_DWORD, &Executed_Airplane_Count, Stat_AutoReset);
|
|
AddStatistic("Executed WeaponMovers", "movers", gos_DWORD, &Executed_WeaponMover_Count, Stat_AutoReset);
|
|
AddStatistic(" Executed Missiles", "missiles", gos_DWORD, &Executed_Missile_Count, Stat_AutoReset);
|
|
AddStatistic("Executed Beams", "movers", gos_DWORD, &Executed_Beam_Count, Stat_AutoReset);
|
|
AddStatistic("Executed NonComs", "NonComs", gos_DWORD, &Executed_NonCom_Count, Stat_AutoReset);
|
|
AddStatistic("Executed AIs", "AIs", gos_DWORD, &Executed_AI_Count, Stat_AutoReset);
|
|
|
|
StatisticFormat("");
|
|
StatisticFormat("Path Statistics");
|
|
StatisticFormat("=====================");
|
|
StatisticFormat("");
|
|
|
|
AddStatistic("Rail Calcs", "Paths", gos_DWORD, &Path_Calcs_Count, Stat_AutoReset);
|
|
AddStatistic(" QuickRail Calcs", "Paths", gos_DWORD, &QuickRail_Calcs_Count, Stat_AutoReset);
|
|
AddStatistic("GridPath Calcs", "Paths", gos_DWORD, &GridPath_Calcs_Count, Stat_AutoReset);
|
|
AddStatistic(" QuickPath Calcs", "Paths", gos_DWORD, &QuickPath_Calcs_Count, Stat_AutoReset);
|
|
AddStatistic("Failed Path Calcs", "Paths", gos_DWORD, &FailedPath_Calcs_Count, Stat_AutoReset);
|
|
AddStatistic("Obstacle Size", "Paths", gos_DWORD, &MW4AI::Obstacle_Size, 0);
|
|
#endif
|
|
|
|
gos_PopCurrentHeap();
|
|
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void
|
|
MechWarrior4::TerminateClasses(Stuff::NotationFile *startup_ini)
|
|
{
|
|
|
|
if (startup_ini)
|
|
{
|
|
Check_Object(startup_ini);
|
|
Page *page = startup_ini->FindPage("Network Options");
|
|
|
|
if (!page)
|
|
{
|
|
page = startup_ini->AddPage("Network Options");
|
|
}
|
|
|
|
Check_Object(page);
|
|
|
|
switch(MWApplication::MyConnectionType)
|
|
{
|
|
case MWApplication::Modem:
|
|
page->SetEntry("ConnectionType", "modem");
|
|
break;
|
|
|
|
case MWApplication::ISDN:
|
|
page->SetEntry("ConnectionType", "isdn");
|
|
break;
|
|
|
|
case MWApplication::xDSL:
|
|
page->SetEntry("ConnectionType", "xdsl");
|
|
break;
|
|
|
|
case MWApplication::Cable:
|
|
page->SetEntry("ConnectionType", "cable");
|
|
break;
|
|
|
|
case MWApplication::LAN:
|
|
page->SetEntry("ConnectionType", "lan");
|
|
break;
|
|
}
|
|
|
|
switch(MWApplication::MyConnectionSpeed)
|
|
{
|
|
case MWApplication::c_14_4kbps:
|
|
page->SetEntry("ConnectionSpeed", "14");
|
|
break;
|
|
case MWApplication::c_28_8kbps:
|
|
page->SetEntry("ConnectionSpeed", "28");
|
|
break;
|
|
case MWApplication::c_56_6kbps:
|
|
page->SetEntry("ConnectionSpeed", "56");
|
|
break;
|
|
case MWApplication::c_64_kbps:
|
|
page->SetEntry("ConnectionSpeed", "64");
|
|
break;
|
|
case MWApplication::c_128_kbps:
|
|
page->SetEntry("ConnectionSpeed", "128");
|
|
break;
|
|
case MWApplication::c_384_kbps:
|
|
page->SetEntry("ConnectionSpeed", "384");
|
|
break;
|
|
case MWApplication::c_768_kbps:
|
|
page->SetEntry("ConnectionSpeed", "768");
|
|
break;
|
|
case MWApplication::c_1500_kbps:
|
|
page->SetEntry("ConnectionSpeed", "1500");
|
|
break;
|
|
case MWApplication::c_10_Mbps:
|
|
page->SetEntry("ConnectionSpeed", "10000");
|
|
break;
|
|
case MWApplication::c_100_Mbps:
|
|
page->SetEntry("ConnectionSpeed", "100000");
|
|
break;
|
|
|
|
}
|
|
|
|
page->SetEntry("PacketSize", MWApplication::DefaultPacketSize);
|
|
}
|
|
|
|
if (startup_ini)
|
|
{
|
|
Check_Object(startup_ini);
|
|
Page *page = startup_ini->SetPage("Graphics Options");
|
|
Check_Object(page);
|
|
|
|
page->SetEntry("NoBlend", Mech::DontLoadBlends);
|
|
}
|
|
|
|
|
|
// terminate classes
|
|
// GUILightAmp::TerminateClass();
|
|
Flag::TerminateClass();
|
|
NavPoint::TerminateClass();
|
|
Team::TerminateClass();
|
|
LBXWeaponSub::TerminateClass();
|
|
ObservationVehicle::TerminateClass();
|
|
MWCampaign::TerminateClass();
|
|
WaterCultural::TerminateClass();
|
|
LBXMover::TerminateClass();
|
|
|
|
// MSL 5.02 SubSystems
|
|
// ArrowWeaponSubsystem::TerminateClass();
|
|
AdvancedGyro::TerminateClass();
|
|
IFF_Jammer::TerminateClass();
|
|
// EnhancedOptics::TerminateClass();
|
|
|
|
// MSL 5.03 RTX
|
|
// RTXWeaponSub::TerminateClass();
|
|
// RTXWeaponSub::ExecutionStateEngine::TerminateClass();
|
|
|
|
SalvageManager::TerminateClass();
|
|
FieldBase::TerminateClass();
|
|
FieldBase::ExecutionStateEngine::TerminateClass();
|
|
MFB::TerminateClass();
|
|
MFB::ExecutionStateEngine::TerminateClass();
|
|
EyePointManager::TerminateClass();
|
|
Gyro::TerminateClass();
|
|
Armor::TerminateClass();
|
|
Boat::TerminateClass();
|
|
Truck::TerminateClass();
|
|
Tank::TerminateClass();
|
|
Hovercraft::TerminateClass();
|
|
JumpJet::TerminateClass();
|
|
JumpJet::ExecutionStateEngine::TerminateClass();
|
|
HighExplosiveWeapon::TerminateClass();
|
|
Explosive::TerminateClass();
|
|
SearchLight::TerminateClass();
|
|
LightEntity::TerminateClass();
|
|
DeathEntity::TerminateClass();
|
|
BombastWeapon::TerminateClass();
|
|
BombastWeapon::ExecutionStateEngine::TerminateClass();
|
|
ArtilleryWeapon::TerminateClass();
|
|
ArtilleryMark::TerminateClass();
|
|
FlamerWeapon::TerminateClass();
|
|
FlameMover::TerminateClass();
|
|
AMS::TerminateClass();
|
|
LongTomWeaponSubsystem::TerminateClass();
|
|
HeatSink::TerminateClass();
|
|
HeatManager::TerminateClass();
|
|
CameraShip::TerminateClass();
|
|
CameraShip::ExecutionStateEngine::TerminateClass();
|
|
VOEntity::TerminateClass();
|
|
EffectGenerator::TerminateClass();
|
|
BombWeaponSubsystem::TerminateClass();
|
|
Dropship::TerminateClass();
|
|
Dropship::ExecutionStateEngine::TerminateClass();
|
|
Helicopter::TerminateClass();
|
|
PlaneAI::TerminateClass();
|
|
Airplane::TerminateClass();
|
|
Airplane::ExecutionStateEngine::TerminateClass();
|
|
FlareWeapon::TerminateClass();
|
|
MWInternalDamageObject::TerminateClass();
|
|
Objective::TerminateClass();
|
|
Objective::ExecutionStateEngine::TerminateClass();
|
|
Path::TerminateClass();
|
|
ECM::TerminateClass();
|
|
Beagle::TerminateClass();
|
|
Sensor::TerminateClass();
|
|
Sensor::ExecutionStateEngine::TerminateClass();
|
|
NarcWeapon::TerminateClass();
|
|
Narc::TerminateClass();
|
|
StickyMover::TerminateClass();
|
|
StickyMover::ExecutionStateEngine::TerminateClass();
|
|
MWVideoRenderer::TerminateClass();
|
|
MWEntityManager::TerminateClass();
|
|
MWApplication::TerminateClass();
|
|
GUIWeapon::TerminateClass();
|
|
PlayerAI::TerminateClass ();
|
|
PlayerAI::ExecutionStateEngine::TerminateClass();
|
|
ShooterAI::TerminateClass ();
|
|
MechAI::TerminateClass ();
|
|
CombatAI::TerminateClass();
|
|
NonComAI::TerminateClass ();
|
|
MoverAI::TerminateClass ();
|
|
MW4AI::CPathManager::TerminateClass ();
|
|
MW4AI::CRailGraph::TerminateClass ();
|
|
AI::TerminateClass();
|
|
LancemateManager::TerminateClass();
|
|
|
|
SSRMWeaponSubsystem::TerminateClass();
|
|
MRMWeaponSubsystem::TerminateClass();
|
|
LRMWeaponSubsystem::TerminateClass();
|
|
SRMWeaponSubsystem::TerminateClass();
|
|
MissileWeapon::TerminateClass();
|
|
Missile::TerminateClass();
|
|
Missile::ExecutionStateEngine::TerminateClass();
|
|
Turret::TerminateClass();
|
|
ProjectileWeapon::TerminateClass();
|
|
ProjectileWeapon::ExecutionStateEngine::TerminateClass();
|
|
Bridge::TerminateClass();
|
|
Building::TerminateClass();
|
|
NonCom::TerminateClass();
|
|
BeamEntity::TerminateClass();
|
|
Torso::TerminateClass();
|
|
Decal::TerminateClass();
|
|
BeamWeapon::TerminateClass();
|
|
BeamWeapon::ExecutionStateEngine::TerminateClass();
|
|
WeaponMover::TerminateClass();
|
|
Weapon::TerminateClass();
|
|
Engine::TerminateClass();
|
|
Mech::TerminateClass();
|
|
Mech::ExecutionStateEngine::TerminateClass();
|
|
Subsystem::TerminateClass();
|
|
Subsystem::ExecutionStateEngine::TerminateClass();
|
|
MWPlayer::TerminateClass();
|
|
VehicleInterface::TerminateClass();
|
|
VehicleInterface::ExecutionStateEngine::TerminateClass();
|
|
Vehicle::ExecutionStateEngine::TerminateClass();
|
|
Vehicle::TerminateClass();
|
|
Cultural::TerminateClass ();
|
|
MWObject::TerminateClass();
|
|
MWMover::ExecutionStateEngine::TerminateClass();
|
|
MWMover::TerminateClass();
|
|
MWMission::TerminateClass();
|
|
AirplaneAnimationStateEngine::TerminateClass();
|
|
MechAnimationStateEngine::TerminateClass();
|
|
AnimationStateEngine::TerminateClass();
|
|
MW4Animation::AnimHierarchyNode::TerminateClass();
|
|
MW4Animation::BlendBuffer::TerminateClass();
|
|
MW4Animation::AnimInstanceManager::TerminateClass();
|
|
MWMap::TerminateClass();
|
|
HUDComponent::TerminateClass ();
|
|
|
|
KillComFuncs ();
|
|
|
|
Check_Pointer(Heap);
|
|
gos_DestroyMemoryHeap(Heap);
|
|
Heap = NULL;
|
|
|
|
Check_Pointer(g_LibraryHeap);
|
|
gos_DestroyMemoryHeap(g_LibraryHeap);
|
|
g_LibraryHeap = NULL;
|
|
|
|
// úè - start
|
|
g_pfnRIO_ButtonEvent = NULL;
|
|
g_pfnRIO_Joy = NULL;
|
|
// úè - end
|
|
}
|