Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

1666 lines
36 KiB
C++

#include "MW4Headers.hpp"
#include "MWDebugHelper.hpp"
#include "MWPlayer.hpp"
#include "Adept\NameTable.hpp"
#include "VehicleInterface.hpp"
#include "Vehicle.hpp"
#include "MWDamageObject.hpp"
#include "MWPlayer.hpp"
#include "AI_DebugRenderer.hpp"
#include "AI_FireStyle.hpp"
#include "AI_CombatTacticInterface.hpp"
#include "ablprofiler.hpp"
#include "rail_move.hpp"
#include "ai.hpp"
#include "moverai.hpp"
#include "combatai.hpp"
#include "mwmission.hpp"
#include "CameraShip.hpp"
#include "MWApplication.hpp"
#include "DamageDispatch.hpp"
#include "NonCom.hpp"
const unsigned int max_switch_entries = 39;
using namespace MW4AI;
using namespace MechWarrior4;
DebugHelper* DebugHelper::m_Instance = 0;
bool DebugHelper::m_AIOff = false;
DebugHelper::DebugHelper()
: m_FollowCamera(false)
, m_PlayerID(0xFFFFFFFF)
, m_SwitchTo_Page(0)
, m_BreakInCurrentVehicle(false)
{
Verify(m_Instance == 0);
m_Instance = this;
AddDebuggerMenuItem("Libraries\\AI\\Show AI Stats",
Check_ShowAIStats,
Activate_ShowAIStats,
0);
AddDebuggerMenuItem("Libraries\\AI\\Show AI Stats (Current Vehicle Only)",
Check_ShowAIStatsCurrentVehicleOnly,
Activate_ShowAIStatsCurrentVehicleOnly,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Show Damage Info",
Check_ShowDamageInfo,
Activate_ShowDamageInfo,
0);
AddDebuggerMenuItem("Libraries\\AI\\Disable AI",
Checked_DisableAI,
Activate_DisableAI,
0);
AddDebuggerMenuItem("Libraries\\AI\\Disable Combat Movement",
Checked_DisableCombatMovement,
Activate_DisableCombatMovement,
0);
AddDebuggerMenuItem("Libraries\\AI\\Disable Combat Firing",
Checked_DisableCombatFiring,
Activate_DisableCombatFiring,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Show Num Path Requests",
Check_ShowNumPathRequests,
Activate_ShowNumPathRequests,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Show Movement Lines",
Check_ShowMovementLines,
Activate_ShowMovementLines,
0);
AddDebuggerMenuItem("Libraries\\AI\\Show Movement Paths",
Check_ShowMovementPaths,
Activate_ShowMovementPaths,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Show Dead Reckoning (0.5s)",
Check_ShowDeadReckoning05s,
Activate_ShowDeadReckoning05s,
0);
AddDebuggerMenuItem("Libraries\\AI\\Show Dead Reckoning (1s)",
Check_ShowDeadReckoning1s,
Activate_ShowDeadReckoning1s,
0);
AddDebuggerMenuItem("Libraries\\AI\\Show Dead Reckoning (2s)",
Check_ShowDeadReckoning2s,
Activate_ShowDeadReckoning2s,
0);
AddDebuggerMenuItem("Libraries\\AI\\Hide Dead Reckoning",
Check_HideDeadReckoning,
Activate_HideDeadReckoning,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Global Invulnerability",
Check_InvulnerabilityGlobal,
Activate_InvulnerabilityGlobal,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Ignore Current Vehicle",
Check_IgnoreCurrentVehicle,
Activate_IgnoreCurrentVehicle,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Enable AI Heat Management",
Check_EnableAIHeatManagement,
Activate_EnableAIHeatManagement,
0);
AddDebuggerMenuItem("Libraries\\AI\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\AI\\Break In Current Vehicle",
Checked_BreakInCurrentVehicle,
Activate_BreakInCurrentVehicle,
0);
AddDebuggerMenuItem("Libraries\\ABL\\Profile",
Check_ABLProfile,
Activate_ABLProfile,
0);
AddDebuggerMenuItem("Libraries\\Camera\\In Mech",
Check_CameraInMech,
Activate_CameraInMech,
0);
AddDebuggerMenuItem("Libraries\\Camera\\External",
Check_CameraExternal,
Activate_CameraExternal,
0);
AddDebuggerMenuItem("Libraries\\Camera\\Top Down",
Check_CameraTopDown,
Activate_CameraTopDown,
0);
AddDebuggerMenuItem("Libraries\\Camera\\Top Down (Follow)",
Check_CameraTopDownFollow,
Activate_CameraTopDownFollow,
0);
AddDebuggerMenuItem("Libraries\\Camera\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Camera\\Attach to Next",
Check_CameraAttachToNext,
Activate_CameraAttachToNext,
0);
AddDebuggerMenuItem("Libraries\\Switch To >>\\ NEXT PAGE -->",0,0,0,Activate_SwitchToNextPage);
{for (int i = 0;
i < max_switch_entries;
++i)
{
std::string s = GetMenuItemName(i);
AddDebuggerMenuItem((char*)s.c_str(),0,0,0,SwitchCallback);
}}
// AddDebuggerMenuItem("Libraries\\Mech\\Pushup Off",
// Check_TestPushupOff,
// Activate_TestPushupOff,
// 0);
AddDebuggerMenuItem("Libraries\\Mech\\Reset",0,
Activate_TestReset,0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\Arm Disabled",
Check_TestArmActivation,
Activate_TestArmActivation,
0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\Left Gimp",
Check_TestLeftGimp,
Activate_TestLeftGimp,
0);
AddDebuggerMenuItem("Libraries\\Mech\\Right Gimp",
Check_TestRightGimp,
Activate_TestRightGimp,
0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\Fall Forward",0,
Activate_TestFallForward,0);
AddDebuggerMenuItem("Libraries\\Mech\\Fall Backward",0,
Activate_TestFallBackward,0);
AddDebuggerMenuItem("Libraries\\Mech\\Fall Left",0,
Activate_TestFallLeft,0);
AddDebuggerMenuItem("Libraries\\Mech\\Fall Right",0,
Activate_TestFallRight,0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\SpringHit1",0,
Activate_TestHit1,0);
AddDebuggerMenuItem("Libraries\\Mech\\SpringHit2",0,
Activate_TestHit2,0);
AddDebuggerMenuItem("Libraries\\Mech\\SpringHit3",0,
Activate_TestHit3,0);
AddDebuggerMenuItem("Libraries\\Mech\\SpringHit4",0,
Activate_TestHit4,0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\Fast Stand Transition",Check_TestFastTransition,
Activate_TestFastTransition,0);
AddDebuggerMenuItem("Libraries\\Mech\\No Blend",Check_NoBlend,
Activate_NoBlend,0);
AddDebuggerMenuItem("Libraries\\Mech\\ ",0,0,0);
AddDebuggerMenuItem("Libraries\\Mech\\Leave Torso Alone",Check_AlwaysLeaveTorsoAlone,
Activate_AlwaysLeaveTorsoAlone,0);
AddDebuggerMenuItem("Libraries\\Mech\\Always Center Torso",Check_AlwaysCenterTorsoToLegs,
Activate_AlwaysCenterTorsoToLegs,0);
AddDebuggerMenuItem("Libraries\\Mech\\Always Center Legs To Torso",Check_AlwaysCenterLegsToTorso,
Activate_AlwaysCenterLegsToTorso,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Throttle Enabled",Check_ThrottleEnabled,Activate_ThrottleEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Turn Enabled",Check_TurnEnabled,Activate_TurnEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Torso Enabled",Check_TorsoEnabled,Activate_TorsoEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Firing Enabled",Check_FiringEnabled,Activate_FiringEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\View Modes Enabled",Check_ViewModesEnabled,Activate_ViewModesEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Target Selection Enabled",Check_TargetSelectionEnabled,Activate_TargetSelectionEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Zoom Enabled",Check_ZoomEnabled,Activate_ZoomEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Heat Enabled",Check_HeatEnabled,Activate_HeatEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Nav Switching Enabled",Check_NavSwitchingEnabled,Activate_NavSwitchingEnabled,0);
AddDebuggerMenuItem("Libraries\\InputTrainer\\Misc Enabled",Check_MiscEnabled,Activate_MiscEnabled,0);
}
DebugHelper::~DebugHelper()
{
Verify(m_Instance != 0);
m_Instance = 0;
}
VehicleInterface* GetVehicleInterface()
{
if (NameTable::GetInstance() == 0)
{
return (0);
}
if (Adept::Player::GetInstance() == NULL)
{
return (0);
}
MWPlayer* p = Cast_Object(MWPlayer*,Adept::Player::GetInstance());
Check_Object(p);
if (p->GetInterface() == NULL)
{
return (0);
}
return (p->GetInterface());
}
Vehicle* GetVehicle()
{
if (GetVehicleInterface() == 0)
{
return (0);
}
return (GetVehicleInterface()->vehicle);
}
Mech* GetMech()
{
Vehicle* v = GetVehicle();
if (v == 0)
{
return (0);
}
if (v->IsDerivedFrom(Mech::DefaultData) == true)
{
return (Cast_Object(Mech*,v));
}
return (0);
}
void DebugHelper::Execute()
{
if ((m_FollowCamera == true) &&
(Check_CameraTopDownFollow() == true) &&
(GetVehicle() != 0))
{
NetMissionParameters::MWNetMissionParameters *params = MWApplication::GetInstance()->GetLocalNetParams();
if (!params->m_allow3rdPerson)
return;
Point3D camera = GetVehicleInterface()->cameraOffset;
Point3D vehicle = (Point3D)GetVehicle()->GetLocalToWorld();
camera.x = vehicle.x;
camera.z = vehicle.z;
GetVehicleInterface()->SetCameraMode(VehicleInterface::TopDownCameraView,&camera);
}
}
DebugHelper* DebugHelper::GetInstance()
{
return (m_Instance);
}
bool __stdcall DebugHelper::Check_CameraInMech()
{
if (GetVehicleInterface() == 0)
{
return (false);
}
return (GetVehicleInterface()->cameraView == VehicleInterface::InMechCameraView);
}
void __stdcall DebugHelper::Activate_CameraInMech()
{
if (GetVehicleInterface() != 0)
{
GetVehicleInterface()->SetCameraMode(VehicleInterface::InMechCameraView);
}
}
bool __stdcall DebugHelper::Check_CameraExternal()
{
if (GetVehicleInterface() == 0)
{
return (false);
}
return (GetVehicleInterface()->cameraView == VehicleInterface::ExternalCameraAttachedView);
}
void __stdcall DebugHelper::Activate_CameraExternal()
{
if (GetVehicleInterface() != 0)
{
NetMissionParameters::MWNetMissionParameters *params = MWApplication::GetInstance()->GetLocalNetParams();
if (!params->m_allow3rdPerson)
return;
GetVehicleInterface()->SetCameraMode(VehicleInterface::ExternalCameraAttachedView);
}
}
bool __stdcall DebugHelper::Check_CameraTopDown()
{
if (GetVehicleInterface() == 0)
{
return (false);
}
if ((GetVehicleInterface()->cameraView == VehicleInterface::TopDownCameraView) &&
(GetInstance()->m_FollowCamera == false))
{
return (true);
}
return (false);
}
void __stdcall DebugHelper::Activate_CameraTopDown()
{
if (GetVehicleInterface() != 0)
{
NetMissionParameters::MWNetMissionParameters *params = MWApplication::GetInstance()->GetLocalNetParams();
if (!params->m_allow3rdPerson)
return;
Stuff::Point3D p = (Point3D)GetVehicle()->GetLocalToWorld();
p.y = 200.0f;
GetVehicleInterface()->SetCameraMode(VehicleInterface::TopDownCameraView,&p);
GetInstance()->m_FollowCamera = false;
}
}
bool __stdcall DebugHelper::Check_CameraTopDownFollow()
{
if (GetVehicleInterface() == 0)
{
return (false);
}
if ((GetVehicleInterface()->cameraView == VehicleInterface::TopDownCameraView) &&
(GetInstance()->m_FollowCamera == true))
{
return (true);
}
return (false);
}
void __stdcall DebugHelper::Activate_CameraTopDownFollow()
{
if (GetVehicleInterface() != 0)
{
NetMissionParameters::MWNetMissionParameters *params = MWApplication::GetInstance()->GetLocalNetParams();
if (!params->m_allow3rdPerson)
return;
Stuff::Point3D p = (Point3D)GetVehicle()->GetLocalToWorld();
p.y = 200.0f;
GetVehicleInterface()->SetCameraMode(VehicleInterface::TopDownCameraView,&p);
GetInstance()->m_FollowCamera = true;
}
}
bool __stdcall DebugHelper::Check_InvulnerabilityGlobal()
{
return (DamageDispatch::GetGlobalInvulnerability());
}
void __stdcall DebugHelper::Activate_InvulnerabilityGlobal()
{
if (DamageDispatch::GetGlobalInvulnerability())
{
DamageDispatch::SetGlobalInvulnerability(false);
}
else
{
DamageDispatch::SetGlobalInvulnerability(true);
}
}
bool __stdcall DebugHelper::Check_CameraAttachToNext()
{
return (false);
}
void __stdcall DebugHelper::Activate_CameraAttachToNext()
{
if ((GetVehicle() == 0) ||
(GetVehicleInterface() == 0))
{
return;
}
if (GetInstance()->m_PlayerID == 0xFFFFFFFF)
{
GetInstance()->m_PlayerID = GetVehicle()->objectID;
}
Adept::NameTable::NameTableEntryArray& vehicle_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::VehicleArray];
int index = vehicle_array.GetLength();
{for (int i = 0;
i < vehicle_array.GetLength();
++i)
{
if (vehicle_array[i].GetObjectID() == GetInstance()->m_PlayerID)
{
index = i + 1;
if (index >= vehicle_array.GetLength())
{
index = 0;
}
if (index < vehicle_array.GetLength())
{
Adept::Entity* entity = vehicle_array[index].dataPointer->GetCurrent();
while ((index < vehicle_array.GetLength()) &&
((entity == 0) ||
(entity->IsDerivedFrom(Vehicle::DefaultData) == false)))
{
++index;
if (index < vehicle_array.GetLength())
{
entity = vehicle_array[index].dataPointer->GetCurrent();
}
else
{
index = 0;
}
if (index == i)
{
return;
}
}
}
break;
}
}}
if ((index >= vehicle_array.GetLength()) ||
(vehicle_array[index].dataPointer->GetCurrent()->IsDerivedFrom(Vehicle::DefaultData) == false))
{
return;
}
Vehicle* v = Cast_Object(Vehicle*,vehicle_array[index].dataPointer->GetCurrent());
Check_Object(v);
SwitchToObject(*v);
}
bool __stdcall DebugHelper::Check_IgnoreCurrentVehicle()
{
if ((GetVehicleInterface()) &&
(GetVehicleInterface()->vehicle))
{
return (GetVehicleInterface()->vehicle->GetTargetDesirability() == MWObject::desirability_never);
}
return (false);
}
void __stdcall DebugHelper::Activate_IgnoreCurrentVehicle()
{
if ((GetVehicleInterface()) &&
(GetVehicleInterface()->vehicle))
{
MWObject* v = GetVehicleInterface()->vehicle;
Stuff::Scalar invuln = v->GetTargetDesirability();
if (invuln == MWObject::desirability_never)
{
v->SetTargetDesirability(MWObject::desirability_invalid);
}
else
{
v->SetTargetDesirability(MWObject::desirability_never);
}
}
}
bool __stdcall DebugHelper::Checked_DisableAI ()
{
return m_AIOff;
}
void __stdcall DebugHelper::Activate_DisableAI ()
{
if (!MWMission::GetInstance())
return;
if (!m_AIOff)
{
int i,j;
m_AIOff = true;
int size;
Check_Object (MWMission::GetInstance());
MWMission *mission = Cast_Object (MWMission*,MWMission::GetInstance());
mission->UnloadScript ();
NameTable *table = NameTable::GetInstance();
Check_Object (table);
i = NameTable::AIArray;
{
size = table->nameTableArray[i].GetLength ();
for (j=0;j<size;j++)
{
NameTableEntry *data;
Entity *who;
data = &table->nameTableArray [i][j];
AI *ai;
MoverAI *moverai;
CombatAI *combatai;
who = data->dataPointer->GetCurrent ();
if (!who)
continue;
if (who->IsDerivedFrom (AI::DefaultData))
{
ai = Cast_Object (AI *,who);
ai->UnloadScript ();
}
if (who->IsDerivedFrom (MoverAI::DefaultData))
{
moverai = Cast_Object (MoverAI *,who);
moverai->ClearMoveOrder ();
}
if (who->IsDerivedFrom (CombatAI::DefaultData))
{
combatai = Cast_Object (CombatAI *,who);
combatai->OrderStopAttacking ();
}
}
}
}
}
bool __stdcall DebugHelper::Check_ShowAIStats()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetAIStatsRendering() == DebugRenderer::STATS_ALL);
}
void __stdcall DebugHelper::Activate_ShowAIStats()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return;
}
if (instance->GetAIStatsRendering() != DebugRenderer::STATS_ALL)
{
instance->SetAIStatsRendering(DebugRenderer::STATS_ALL);
}
else
{
instance->SetAIStatsRendering(DebugRenderer::STATS_NONE);
}
}
bool __stdcall DebugHelper::Check_ShowAIStatsCurrentVehicleOnly()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetAIStatsRendering() == DebugRenderer::STATS_CURRENT_VEHICLE);
}
void __stdcall DebugHelper::Activate_ShowAIStatsCurrentVehicleOnly()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return;
}
if (instance->GetAIStatsRendering() != DebugRenderer::STATS_CURRENT_VEHICLE)
{
instance->SetAIStatsRendering(DebugRenderer::STATS_CURRENT_VEHICLE);
}
else
{
instance->SetAIStatsRendering(DebugRenderer::STATS_NONE);
}
}
bool __stdcall DebugHelper::Check_ShowDamageInfo()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return (false);
}
return (instance->GetDamageInfoRendering());
}
void __stdcall DebugHelper::Activate_ShowDamageInfo()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return;
}
if (instance->GetDamageInfoRendering() == true)
{
instance->SetDamageInfoRendering(false);
}
else
{
instance->SetDamageInfoRendering(true);
}
}
bool __stdcall DebugHelper::Check_ShowMovementLines()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return (false);
}
return (instance->GetMovementLineRendering());
}
void __stdcall DebugHelper::Activate_ShowMovementLines()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return;
}
if (instance->GetMovementLineRendering() == true)
{
instance->SetMovementLineRendering(false);
}
else
{
instance->SetMovementLineRendering(true);
}
}
bool __stdcall DebugHelper::Check_ShowMovementPaths()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return (false);
}
return (instance->GetMovementPathRendering());
}
void __stdcall DebugHelper::Activate_ShowMovementPaths()
{
DebugRenderer* instance = DebugRenderer::GetInstance();
if (instance == 0)
{
return;
}
if (instance->GetMovementPathRendering() == true)
{
instance->SetMovementPathRendering(false);
}
else
{
instance->SetMovementPathRendering(true);
}
}
DWORD __stdcall DebugHelper::SwitchCallback(char* name, DWORD function)
{
if ((GetInstance() == 0) ||
(GetVehicle() == 0))
{
return (0);
}
gos_PushCurrentHeap(Heap);
unsigned int index = GetMenuItemIndex(name);
switch (function)
{
case gosMenu_Name:
{
GetInstance()->m_PublicString = GetMenuItemName(index,false);
GetInstance()->m_PublicString += " ";
GetInstance()->m_PublicString += GetObjectName(index);
gos_PopCurrentHeap();
return (DWORD)(GetInstance()->m_PublicString.c_str()); // Override name
}
case gosMenu_Activated:
{
SwitchToObject(index);
gos_PopCurrentHeap();
return 1;
}
}
gos_PopCurrentHeap();
return (0);
}
std::string DebugHelper::GetMenuItemName(unsigned int index, bool fIncludePrefix)
{
Verify(index < 100);
std::string rv;
if (fIncludePrefix == true)
{
rv = GetSwitchToPrefix();
}
char s[80];
if (index < 10)
{
sprintf(s,"0%d",index);
}
else
{
sprintf(s,"%d",index);
}
rv += s;
return (rv);
}
unsigned int DebugHelper::GetMenuItemIndex(const std::string& name)
{
Verify(name.size() >= GetSwitchToPrefix().size() + 2);
std::string n = name;
n.erase(0,GetSwitchToPrefix().size());
return (10 * (n[0] - '0')) + (n[1] - '0');
}
std::string DebugHelper::GetSwitchToPrefix()
{
return ("Libraries\\Switch To >>\\");
}
unsigned int DebugHelper::GetNumObjectNames()
{
Adept::NameTable::NameTableEntryArray& vehicle_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::VehicleArray];
int count = 0;
{for (int i = 0;
i < vehicle_array.GetLength();
++i)
{
Adept::Entity* entity = vehicle_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(Vehicle::DefaultData) == true))
{
++count;
}
}}
Adept::NameTable::NameTableEntryArray& cultural_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::CulturalArray];
{for (int i = 0;
i < cultural_array.GetLength();
++i)
{
Adept::Entity* entity = cultural_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(NonCom::DefaultData) == true))
{
++count;
}
}}
if (count > max_switch_entries)
{
return (max_switch_entries);
}
return (count);
}
std::string DebugHelper::GetObjectName(unsigned int index)
{
Adept::NameTable::NameTableEntryArray& vehicle_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::VehicleArray];
Adept::NameTable::NameTableEntryArray& cultural_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::CulturalArray];
int count = 0;
index += GetInstance()->m_SwitchTo_Page * max_switch_entries;
if (index >= vehicle_array.GetLength() + cultural_array.GetLength())
{
return ("");
}
{for (unsigned int i = 0;
i < vehicle_array.GetLength();
++i)
{
Adept::Entity* entity = vehicle_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(Vehicle::DefaultData) == true))
{
if (count == index)
{
return (entity->instanceName);
}
++count;
}
}}
{for (unsigned int i = 0;
i < cultural_array.GetLength();
++i)
{
Adept::Entity* entity = cultural_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(NonCom::DefaultData) == true))
{
if (count == index)
{
return (entity->instanceName);
}
++count;
}
}}
return ("");
}
void DebugHelper::SwitchToObject(unsigned int index)
{
Adept::NameTable::NameTableEntryArray& vehicle_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::VehicleArray];
Adept::NameTable::NameTableEntryArray& cultural_array = Adept::NameTable::GetInstance()->nameTableArray[Adept::NameTable::CulturalArray];
int count = 0;
index += GetInstance()->m_SwitchTo_Page * max_switch_entries;
if (index >= vehicle_array.GetLength() + cultural_array.GetLength())
{
return;
}
{for (unsigned int i = 0;
i < vehicle_array.GetLength();
++i)
{
Adept::Entity* entity = vehicle_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(Vehicle::DefaultData) == true))
{
if (count == index)
{
Vehicle* v = Cast_Object(Vehicle*,entity);
SwitchToObject(*v);
return;
}
++count;
}
}}
{for (unsigned int i = 0;
i < cultural_array.GetLength();
++i)
{
Adept::Entity* entity = cultural_array[i].dataPointer->GetCurrent();
if ((entity != 0) &&
(entity->IsDerivedFrom(NonCom::DefaultData) == true))
{
if (count == index)
{
MWObject* v = Cast_Object(MWObject*,entity);
SwitchToObject(*v);
return;
}
++count;
}
}}
}
void DebugHelper::SwitchToObject(MWObject& v)
{
Check_Object(&v);
// no one is allowed to switch unless they are the server
if ((!Network::GetInstance()->AmIServer()) ||
(CameraShipManager::Instance == 0))
return;
NetMissionParameters::MWNetMissionParameters *params = MWApplication::GetInstance()->GetLocalNetParams();
if (!params->m_allow3rdPerson)
return;
GetInstance()->m_PlayerID = v.objectID;
Stuff::UnitVector3D unit_backward;
v.GetLocalToWorld().GetLocalBackwardInWorld(&unit_backward);
Stuff::Point3D backward(unit_backward);
backward *= 16;
Stuff::LinearMatrix4D matrix(v.GetLocalToWorld());
backward += (Stuff::Point3D)matrix;
matrix.BuildTranslation(backward);
GetVehicleInterface()->SetCameraMode(VehicleInterface::ExternalCameraDetachedView);
GetVehicleInterface()->cameraOffset = matrix;
GetVehicleInterface()->cameraOffset.y += 5;
GetVehicleInterface()->cameraRotation = YawPitchRoll(matrix);
}
DWORD __stdcall DebugHelper::Activate_SwitchToNextPage(char* name, DWORD function)
{
switch (function)
{
case gosMenu_Activated:
{
const unsigned int max_pages = GetNumObjectNames() / max_switch_entries;
if (GetInstance()->m_SwitchTo_Page >= max_pages)
{
GetInstance()->m_SwitchTo_Page = 0;
}
else
{
++(GetInstance()->m_SwitchTo_Page);
}
return 1;
}
}
return 0;
}
bool __stdcall DebugHelper::Check_ShowDeadReckoning05s()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetDeadReckoningRenderTime() == 0.5f);
}
void __stdcall DebugHelper::Activate_ShowDeadReckoning05s()
{
if (DebugRenderer::GetInstance() != 0)
{
DebugRenderer::GetInstance()->SetDeadReckoningRenderTime(0.5f);
}
}
bool __stdcall DebugHelper::Check_ShowDeadReckoning1s()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetDeadReckoningRenderTime() == 1);
}
void __stdcall DebugHelper::Activate_ShowDeadReckoning1s()
{
if (DebugRenderer::GetInstance() != 0)
{
DebugRenderer::GetInstance()->SetDeadReckoningRenderTime(1);
}
}
bool __stdcall DebugHelper::Check_ShowDeadReckoning2s()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetDeadReckoningRenderTime() == 2);
}
void __stdcall DebugHelper::Activate_ShowDeadReckoning2s()
{
if (DebugRenderer::GetInstance() != 0)
{
DebugRenderer::GetInstance()->SetDeadReckoningRenderTime(2);
}
}
bool __stdcall DebugHelper::Check_HideDeadReckoning()
{
if (DebugRenderer::GetInstance() == 0)
{
return (false);
}
return (DebugRenderer::GetInstance()->GetDeadReckoningRenderTime() == 0);
}
void __stdcall DebugHelper::Activate_HideDeadReckoning()
{
if (DebugRenderer::GetInstance() != 0)
{
DebugRenderer::GetInstance()->SetDeadReckoningRenderTime(0);
}
}
bool __stdcall DebugHelper::Check_ShowNumPathRequests()
{
if (DebugRenderer::GetInstance() != 0)
{
return (DebugRenderer::GetInstance()->GetShowNumPathRequests());
}
return (false);
}
void __stdcall DebugHelper::Activate_ShowNumPathRequests()
{
if (DebugRenderer::GetInstance() != 0)
{
if (DebugRenderer::GetInstance()->GetShowNumPathRequests() == true)
{
DebugRenderer::GetInstance()->SetShowNumPathRequests(false);
}
else
{
DebugRenderer::GetInstance()->SetShowNumPathRequests(true);
}
}
}
bool __stdcall DebugHelper::Check_EnableAIHeatManagement()
{
return (MW4AI::FireStyles::FireStyle::gHeatManagementEnabled == true);
}
void __stdcall DebugHelper::Activate_EnableAIHeatManagement()
{
if (MW4AI::FireStyles::FireStyle::gHeatManagementEnabled == true)
{
MW4AI::FireStyles::FireStyle::gHeatManagementEnabled = false;
}
else
{
MW4AI::FireStyles::FireStyle::gHeatManagementEnabled = true;
}
}
bool __stdcall DebugHelper::Checked_DisableCombatMovement()
{
return (MW4AI::CombatTacticInterface::g_DisableMovement);
}
void __stdcall DebugHelper::Activate_DisableCombatMovement()
{
if (MW4AI::CombatTacticInterface::g_DisableMovement == true)
{
MW4AI::CombatTacticInterface::g_DisableMovement = false;
}
else
{
MW4AI::CombatTacticInterface::g_DisableMovement = true;
}
}
bool __stdcall DebugHelper::Checked_DisableCombatFiring()
{
return (MW4AI::CombatTacticInterface::g_DisableFiring);
}
void __stdcall DebugHelper::Activate_DisableCombatFiring()
{
if (MW4AI::CombatTacticInterface::g_DisableFiring == true)
{
MW4AI::CombatTacticInterface::g_DisableFiring = false;
}
else
{
MW4AI::CombatTacticInterface::g_DisableFiring = true;
}
}
bool __stdcall DebugHelper::Check_TestArmActivation()
{
if (GetMech() == 0)
{
return (false);
}
return (GetMech()->Test_GetArmActivation());
}
void __stdcall DebugHelper::Activate_TestArmActivation()
{
if (GetMech() != 0)
{
GetMech()->Test_ArmActivation();
}
}
bool __stdcall DebugHelper::Check_TestPushupOff()
{
if (GetMech() == 0)
{
return (false);
}
return (GetMech()->Test_GetPushupOff());
}
void __stdcall DebugHelper::Activate_TestPushupOff()
{
if (GetMech() != 0)
{
GetMech()->Test_PushupOff();
}
}
bool __stdcall DebugHelper::Check_TestLeftGimp()
{
if (GetMech() == 0)
{
return (false);
}
return (GetMech()->Test_GetLeftGimp());
}
void __stdcall DebugHelper::Activate_TestLeftGimp()
{
if (GetMech() != 0)
{
GetMech()->Test_LeftGimp();
}
}
bool __stdcall DebugHelper::Check_TestRightGimp()
{
if (GetMech() == 0)
{
return (false);
}
return (GetMech()->Test_GetRightGimp());
}
void __stdcall DebugHelper::Activate_TestRightGimp()
{
if (GetMech() != 0)
{
GetMech()->Test_RightGimp();
}
}
void __stdcall DebugHelper::Activate_TestLeftArmRecoil()
{
if (GetMech() != 0)
{
GetMech()->Test_LeftArmRecoil();
}
}
void __stdcall DebugHelper::Activate_TestRightGunRecoil()
{
if (GetMech() != 0)
{
GetMech()->Test_RightGunRecoil();
}
}
void __stdcall DebugHelper::Activate_TestHit1()
{
if (GetMech() != 0)
{
GetMech()->Test_Hit1();
}
}
void __stdcall DebugHelper::Activate_TestHit2()
{
if (GetMech() != 0)
{
GetMech()->Test_Hit2();
}
}
void __stdcall DebugHelper::Activate_TestHit3()
{
if (GetMech() != 0)
{
GetMech()->Test_Hit3();
}
}
void __stdcall DebugHelper::Activate_TestHit4()
{
if (GetMech() != 0)
{
GetMech()->Test_Hit4();
}
}
void __stdcall DebugHelper::Activate_TestReset()
{
if (GetMech() != 0)
{
GetMech()->Test_Reset();
}
}
void __stdcall DebugHelper::Activate_TestFallForward()
{
if (GetMech() != 0)
{
GetMech()->Test_FallForward();
}
}
void __stdcall DebugHelper::Activate_TestFallBackward()
{
if (GetMech() != 0)
{
GetMech()->Test_FallBackward();
}
}
void __stdcall DebugHelper::Activate_TestFallLeft()
{
if (GetMech() != 0)
{
GetMech()->Test_FallLeft();
}
}
void __stdcall DebugHelper::Activate_TestFallRight()
{
if (GetMech() != 0)
{
GetMech()->Test_FallRight();
}
}
bool __stdcall DebugHelper::Checked_BreakInCurrentVehicle()
{
if (GetInstance() == 0)
{
return (false);
}
return (GetInstance()->m_BreakInCurrentVehicle);
}
void __stdcall DebugHelper::Activate_BreakInCurrentVehicle()
{
if (GetInstance() == 0)
{
return;
}
if (GetInstance()->m_BreakInCurrentVehicle == true)
{
GetInstance()->m_BreakInCurrentVehicle = false;
}
else
{
GetInstance()->m_BreakInCurrentVehicle = true;
}
}
bool DebugHelper::ShouldBreakInCurrentVehicle() const
{
return (m_BreakInCurrentVehicle);
}
bool __stdcall DebugHelper::Check_TestFastTransition()
{
if (GetMech() == 0)
{
return (false);
}
return (GetMech()->GetFastTransition());
}
void __stdcall DebugHelper::Activate_TestFastTransition()
{
if (GetMech() != 0)
{
GetMech()->FastTransition();
}
}
bool __stdcall DebugHelper::Check_NoBlend()
{
return Mech::DontLoadBlends;
}
void __stdcall DebugHelper::Activate_NoBlend()
{
Mech::DontLoadBlends = !Mech::DontLoadBlends;
}
bool __stdcall DebugHelper::Check_AlwaysLeaveTorsoAlone()
{
if (GetMech() == 0)
{
return (false);
}
if (GetMech()->vehicleInterface == 0)
{
return (false);
}
return (GetMech()->vehicleInterface->GetPerminateTorsoMode() == VehicleInterface::LeaveTorsoAlone);
}
void __stdcall DebugHelper::Activate_AlwaysLeaveTorsoAlone()
{
if (GetMech() != 0)
{
if (GetMech()->vehicleInterface != 0)
{
GetMech()->vehicleInterface->SetPerminateTorsoMode(VehicleInterface::LeaveTorsoAlone);
}
}
}
bool __stdcall DebugHelper::Check_AlwaysCenterTorsoToLegs()
{
if (GetMech() == 0)
{
return (false);
}
if (GetMech()->vehicleInterface == 0)
{
return (false);
}
return (GetMech()->vehicleInterface->GetPerminateTorsoMode() == VehicleInterface::CenterTorsoToLegs);
}
void __stdcall DebugHelper::Activate_AlwaysCenterTorsoToLegs()
{
if (GetMech() != 0)
{
if (GetMech()->vehicleInterface != 0)
{
GetMech()->vehicleInterface->SetPerminateTorsoMode(VehicleInterface::CenterTorsoToLegs);
}
}
}
bool __stdcall DebugHelper::Check_AlwaysCenterLegsToTorso()
{
if (GetMech() == 0)
{
return (false);
}
if (GetMech()->vehicleInterface == 0)
{
return (false);
}
return (GetMech()->vehicleInterface->GetPerminateTorsoMode() == VehicleInterface::CenterLegsToTorso);
}
void __stdcall DebugHelper::Activate_AlwaysCenterLegsToTorso()
{
if (GetMech() != 0)
{
if (GetMech()->vehicleInterface != 0)
{
GetMech()->vehicleInterface->SetPerminateTorsoMode(VehicleInterface::CenterLegsToTorso);
}
}
}
bool __stdcall DebugHelper::Check_ABLProfile()
{
if ((ABL::Profiler::Instance() != 0) &&
(ABL::Profiler::Instance()->GetActive() == true))
{
return (true);
}
return (false);
}
void __stdcall DebugHelper::Activate_ABLProfile()
{
if (ABL::Profiler::Instance() != 0)
{
if (ABL::Profiler::Instance()->GetActive() == true)
{
ABL::Profiler::Instance()->SetActive(false);
}
else
{
ABL::Profiler::Instance()->SetActive(true);
}
}
}
void InputTrainer_ToggleEnabled(InputTrainer::InputType t)
{
if (InputTrainer::GetInstance()->GetEnabled(t) == true)
{
InputTrainer::GetInstance()->SetEnabled(t,false);
}
else
{
InputTrainer::GetInstance()->SetEnabled(t,true);
}
}
bool __stdcall DebugHelper::Check_ThrottleEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::THROTTLE));
}
void __stdcall DebugHelper::Activate_ThrottleEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::THROTTLE);
}
bool __stdcall DebugHelper::Check_TurnEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::TURN));
}
void __stdcall DebugHelper::Activate_TurnEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::TURN);
}
bool __stdcall DebugHelper::Check_TorsoEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::TORSO));
}
void __stdcall DebugHelper::Activate_TorsoEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::TORSO);
}
bool __stdcall DebugHelper::Check_FiringEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::FIRING));
}
void __stdcall DebugHelper::Activate_FiringEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::FIRING);
}
bool __stdcall DebugHelper::Check_ViewModesEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::VIEW_MODES));
}
void __stdcall DebugHelper::Activate_ViewModesEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::VIEW_MODES);
}
bool __stdcall DebugHelper::Check_TargetSelectionEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::TARGET_SELECTION));
}
void __stdcall DebugHelper::Activate_TargetSelectionEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::TARGET_SELECTION);
}
bool __stdcall DebugHelper::Check_ZoomEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::ZOOM));
}
void __stdcall DebugHelper::Activate_ZoomEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::ZOOM);
}
bool __stdcall DebugHelper::Check_HeatEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::HEAT));
}
void __stdcall DebugHelper::Activate_HeatEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::HEAT);
}
bool __stdcall DebugHelper::Check_NavSwitchingEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::NAV_SWITCHING));
}
void __stdcall DebugHelper::Activate_NavSwitchingEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::NAV_SWITCHING);
}
bool __stdcall DebugHelper::Check_MiscEnabled()
{
return (InputTrainer::GetInstance()->GetEnabled(InputTrainer::MISC));
}
void __stdcall DebugHelper::Activate_MiscEnabled()
{
InputTrainer_ToggleEnabled(InputTrainer::MISC);
}