Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//
//=============================================================================//
#pragma warning (disable:4786)
#include <string>
#include "Player.h"
#include "MatchInfo.h"
using namespace std;
CPlayer::CPlayer() :teams() { WONID=pid=svrPID=-1; logontime=logofftime=reconnects=0; name="uninitted"; }
void CPlayer::nameFound(time_t t, string alias) { if (aliases.atTime(t)!=alias) { aliases.add(t,alias); } name=aliases.favourite(); }
time_t CPlayer::plr_per_team_data::timeOn() { /*if (logofftime==0)
{ logofftime=g_pMatchInfo->logCloseTime(); } return logofftime-logontime; */ return timeon; } time_t CPlayer::totalTimeOn() { if (logofftime==0) { logofftime=g_pMatchInfo->logCloseTime(); } return logofftime-logontime; }
double CPlayer::plr_per_team_data::rank() { double d = (kills-deaths); double time=((double)timeOn())/1000.0;
if (time < .000001) return d;
return d/time; }
string CPlayer::plr_per_team_data::faveWeapon() { if (faveweapon=="" && weaponKills.begin()!=weaponKills.end()) { faveweapkills=0; //noKills=false;
map<string,int>::iterator weapIt=weaponKills.begin(); string& fave=(string&) (*weapIt).first; int faveKills=(*weapIt).second; for (weapIt;weapIt!=weaponKills.end();++weapIt) { const string& weapName=(*weapIt).first; int kills=(*weapIt).second; if (kills < faveKills) continue; fave=weapName; faveKills=kills; } faveweapkills=faveKills; faveweapon=fave; } return faveweapon; }
int CPlayer::plr_per_team_data::faveWeapKills() { if (faveweapkills==0) { //calculate favourite weapon stats
faveWeapon(); } return faveweapkills; }
void CPlayer::merge() { perteam[ALL_TEAMS].kills=perteam[0].kills+perteam[1].kills+perteam[2].kills+perteam[3].kills; perteam[ALL_TEAMS].deaths=perteam[0].deaths+perteam[1].deaths+perteam[2].deaths+perteam[3].deaths; perteam[ALL_TEAMS].suicides=perteam[0].suicides+perteam[1].suicides+perteam[2].suicides+perteam[3].suicides; perteam[ALL_TEAMS].teamkills=perteam[0].teamkills+perteam[1].teamkills+perteam[2].teamkills+perteam[3].teamkills; perteam[ALL_TEAMS].teamkilled=perteam[0].teamkilled+perteam[1].teamkilled+perteam[2].teamkilled+perteam[3].teamkilled; perteam[ALL_TEAMS].timeon=perteam[0].timeon+perteam[1].timeon+perteam[2].timeon+perteam[3].timeon; for (int i=0;i<MAX_TEAMS;i++) { map<std::string,int>::iterator it; for (it=perteam[i].weaponKills.begin();it!=perteam[i].weaponKills.end();++it) { string weapname=(*it).first; int kills=(*it).second; perteam[ALL_TEAMS].weaponKills[weapname]+=kills; } } //this is probably only a shallow copy, but that's ok
perteam[ALL_TEAMS].classesplayed=allclassesplayed; }
|