diff options
Diffstat (limited to 'utils/tfstats/sharpshooteraward.cpp')
| -rw-r--r-- | utils/tfstats/sharpshooteraward.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/utils/tfstats/sharpshooteraward.cpp b/utils/tfstats/sharpshooteraward.cpp new file mode 100644 index 0000000..44cc9dd --- /dev/null +++ b/utils/tfstats/sharpshooteraward.cpp @@ -0,0 +1,91 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Implementation of CSharpshooterAward +// +// $Workfile: $ +// $Date: $ +// +//------------------------------------------------------------------------------------------------------ +// $Log: $ +// +// $NoKeywords: $ +//=============================================================================// +#include "SharpshooterAward.h" + +double CSharpshooterAward::HS_VALUE = 3.00; +double CSharpshooterAward::SHOT_VALUE = 1.00; + +//------------------------------------------------------------------------------------------------------ +// Function: CSharpshooterAward::getWinner +// Purpose: this totals up each sniper's score and determines a winner +//------------------------------------------------------------------------------------------------------ +void CSharpshooterAward::getWinner() +{ + CEventListIterator it; + + for (it=g_pMatchInfo->eventList()->begin(); it != g_pMatchInfo->eventList()->end(); ++it) + { + if ((*it)->getType()==CLogEvent::FRAG) + { + if (strcmp((*it)->getArgument(2)->getStringValue(),"sniperrifle")==0) + { + PID pid=(*it)->getArgument(0)->asPlayerGetPID(); + sharpshooterscore[pid]+=SHOT_VALUE; + numshots[pid]++; + } + else if (strcmp((*it)->getArgument(2)->getStringValue(),"headshot")==0) + { + PID pid=(*it)->getArgument(0)->asPlayerGetPID(); + sharpshooterscore[pid]+=HS_VALUE; + numhs[pid]++; + } + } + } + + int winnerScore=0; + winnerID=-1; + fNoWinner=true; + + map<PID,int>::iterator it2=sharpshooterscore.begin(); + for (it2;it2!=sharpshooterscore.end();++it2) + { + PID pid=(*it2).first; + int score=(*it2).second; + if (score > winnerScore) + { + winnerID=pid; + winnerScore=score; + fNoWinner=false; + } + } + + +} + +//------------------------------------------------------------------------------------------------------ +// Function: CSharpshooterAward::noWinner +// Purpose: this writes html to indicate that no snipers got any kills +// Input: html - the html file to write to +//------------------------------------------------------------------------------------------------------ +void CSharpshooterAward::noWinner(CHTMLFile& html) +{ + html.write("No one was sniped during this match"); +} + +//------------------------------------------------------------------------------------------------------ +// Function: CSharpshooterAward::extendedinfo +// Purpose: this reports how many headshots and normal shots the winner got +// Input: html - the html file to write to +//------------------------------------------------------------------------------------------------------ +void CSharpshooterAward::extendedinfo(CHTMLFile& html) +{ + int hs=numhs[winnerID]; + int shots=numshots[winnerID]; + if (hs && shots) + html.write("%s got %li headshots and %li normal shots!",winnerName.c_str(),hs,shots); + else if (hs && !shots) + html.write("All of %s's %li snipes were headshots!",winnerName.c_str(),hs); + else if (shots && !hs) + html.write("%s sniped %li people!",winnerName.c_str(),shots); +} + |