Files
firestorm/Gameleap/code/mw4/Code/MW4/AI_Statistics.cpp
T
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

200 lines
4.2 KiB
C++

#include "MW4Headers.hpp"
#include "AI_Statistics.hpp"
#include <windows.h>
#include <buildnum\curver.h>
#include <gameos\registry.hpp>
#include <Adept\NameTable.hpp>
#include "data_client.hpp"
#include "aiutils.hpp"
#include "gameinfo.hpp"
#include <Adept\Application.hpp>
#include <Adept\DamageObject.hpp>
// NOTE: this has all been (permanently?) commented out since no
// one is using it. -- PAULTOZ
using namespace MW4AI;
using namespace MW4AI::Statistics;
namespace MW4AI
{
namespace Statistics
{
bool g_StatisticsEnabled = false;
};
};
void Statistics::Init()
{
#ifdef LAB_ONLY
gos_PushCurrentHeap(Heap);
FILETIME ft;
GetSystemTimeAsFileTime(&ft);
SYSTEMTIME st;
FileTimeToSystemTime(&ft,&st);
std::string s;
s += IntToString(st.wMonth);
s += "/";
s += IntToString(st.wDay);
s += "/";
s += IntToString(st.wYear);
s += " ";
s += IntToString(st.wHour);
s += ":";
s += IntToString(st.wMinute);
char computer_name[200];
DWORD name_size = 200;
GetComputerName(computer_name,&name_size);
char user_name[200];
DWORD username_size = 200;
GetUserName((char*)&user_name,&username_size);
#if 0
if (!strcmp (user_name,"dabzug"))
g_AbzugFlag = true;
else
g_AbzugFlag = false;
if (s_NoAbzug)
g_AbzugFlag = false;
#endif
DataClient::Add_StartMission((float)gos_GetElapsedTime());
DataClient::Add_BuildVersion(CURRENT_BUILD_FULL_STRING);
DataClient::Add_CompileDate(__DATE__);
DataClient::Add_CompileTime(__TIME__);
DataClient::Add_UserName(user_name);
DataClient::Add_MachineName(computer_name);
DataClient::Add_DateTime(s.c_str());
DataClient::Add_MissionName(MWGameInfo::g_MissionName);
DataClient::Add_PlayerMech(MWGameInfo::g_PlayerMech);
DataClient::Add_NetworkingFlag(Application::GetInstance()->networkingFlag);
gos_PopCurrentHeap();
#endif
}
void Statistics::Quit()
{
#ifdef LAB_ONLY
DataClient::Add_EndMission((float)gos_GetElapsedTime());
#endif
}
std::string LookupName(int id)
{
if (NameTable::GetInstance() == 0)
{
return ("");
}
NameTableEntry* entry = NameTable::GetInstance()->FindEntry(id);
if (entry == 0)
{
return ("");
}
return (entry->objectName);
}
void Statistics::NotifyDamageTaken(int receiver_id, int sender_id, float damage, int damage_type)
{
#ifdef LAB_ONLY
std::string receiver_name(LookupName(receiver_id));
std::string sender_name(LookupName(sender_id));
std::string damage_type_name;
switch (damage_type)
{
case Adept::BeamDamageType:
{
damage_type_name = "Beam Damage";
break;
}
case Adept::MissileDamageType:
{
damage_type_name = "Missile Damage";
break;
}
case Adept::ProjectileDamageType:
{
damage_type_name = "Projectile Damage";
break;
}
case Adept::SplashDamageType:
{
damage_type_name = "Splash Damage";
break;
}
case Adept::HeatDamageType:
{
damage_type_name = "Heat Damage";
break;
}
// MSL 5.03 Lava
case Adept::LavaDamageType:
{
damage_type_name = "Lava Damage";
break;
}
case Adept::AmmoFireDamageType:
{
damage_type_name = "Ammo Fire Damage";
break;
}
}
DataClient::Add_Damage(receiver_id,receiver_name.c_str(),sender_id,sender_name.c_str(),damage,damage_type_name.c_str(),(float)gos_GetElapsedTime());
#endif
}
void Statistics::NotifyDestroyed(int destroyed_id)
{
#ifdef LAB_ONLY
std::string destroyed_name(LookupName(destroyed_id));
DataClient::Add_Destroyed(destroyed_id,destroyed_name.c_str(),(float)gos_GetElapsedTime());
#endif
}
void Statistics::NotifyObjective(char* objective_name, bool succeeded)
{
#ifdef LAB_ONLY
DataClient::Add_Objective(objective_name,succeeded,(float)gos_GetElapsedTime());
#endif
}
void Statistics::NotifyToHitRoll(int shooter_id, float base_to_hit, float modified_to_hit, float rolled)
{
#ifdef LAB_ONLY
std::string shooter_name(LookupName(shooter_id));
DataClient::Add_ToHitRoll(shooter_name.c_str(),shooter_id,base_to_hit,modified_to_hit,rolled,(float)gos_GetElapsedTime());
#endif
}
bool Statistics::Enabled()
{
//#ifdef LAB_ONLY
return (g_StatisticsEnabled);
//#endif
}
void Statistics::SetEnabled(bool enabled)
{
#ifdef LAB_ONLY
g_StatisticsEnabled = enabled;
#endif
}