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.
126 lines
3.8 KiB
126 lines
3.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Implementation of CScoreboard |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//------------------------------------------------------------------------------------------------------ |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#include "Scoreboard.h" |
|
|
|
|
|
//------------------------------------------------------------------------------------------------------ |
|
// Function: CScoreboard::init |
|
// Purpose: initializes the object |
|
//------------------------------------------------------------------------------------------------------ |
|
void CScoreboard::init() |
|
{ |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------ |
|
// Function: CScoreboard::generate |
|
// Purpose: generates intermediate data based on match info |
|
//------------------------------------------------------------------------------------------------------ |
|
void CScoreboard::generate() |
|
{ |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------ |
|
// Function: CScoreboard::writeHTML |
|
// Purpose: generates html from the intermediate data generated by generate() |
|
// Input: html - the html file to write the html code into |
|
//------------------------------------------------------------------------------------------------------ |
|
void CScoreboard::writeHTML(CHTMLFile& html) |
|
{ |
|
CPlayerListIterator i; |
|
int t; |
|
|
|
bool teamFound=false; |
|
|
|
for (t=0;t<MAX_TEAMS;t++) |
|
{ |
|
if (!g_pMatchInfo->teamExists(t)) |
|
continue; |
|
|
|
if (!teamFound) |
|
{ |
|
html.write("<p>"); |
|
html.write("<img src=\"%s/scores.gif\">",g_pApp->supportHTTPPath.c_str()); |
|
teamFound=true; |
|
} |
|
|
|
int totalkills=0; |
|
int totaldeaths=0; |
|
double teamrank=0; |
|
int numplrs=0; |
|
|
|
html.write("<table cellpadding=3 cellspacing=0 border=0 class=scores>"); |
|
html.write("<tr class=header>"); |
|
html.write("<td ><font class=boardtext>%s</font></td>",g_pMatchInfo->teamName(t).c_str()); |
|
html.write("<td><font class=boardtext>Kills</font></td>"); |
|
html.write("<td><font class=boardtext>Deaths</font></td>"); |
|
html.write("<td><font class=boardtext>Rank</font></td>"); |
|
html.write("</tr>"); |
|
|
|
multimap<double,CPlayer> ranksort; |
|
for (i=g_pMatchInfo->playerBegin();i!=g_pMatchInfo->playerEnd();++i) |
|
{ |
|
pair<PID,CPlayer> plr=(*i); |
|
PID pid=plr.first; |
|
CPlayer& p=plr.second; |
|
|
|
if (p.teams.contains(t)) |
|
{ |
|
double rank=p.perteam[t].rank(); |
|
pair<double,CPlayer> insertme(rank,p); |
|
ranksort.insert(insertme); |
|
//ranksort[rank]=p; |
|
} |
|
} |
|
|
|
multimap<double,CPlayer>::reverse_iterator i2; |
|
for (i2=ranksort.rbegin();i2!=ranksort.rend();++i2) |
|
{ |
|
double rank=(*i2).first; |
|
CPlayer p=(*i2).second; |
|
|
|
if (!p.teams.contains(t)) |
|
{ |
|
continue; |
|
} |
|
|
|
html.write("<tr>\n"); |
|
html.write("\n"); |
|
html.write("<td width=140><font class=player%s>%s</font></td>\n",Util::teamcolormap[t],p.name.c_str()); |
|
html.write("<td width=100><font class=boardtext>%li</font></td>\n",p.perteam[t].kills); |
|
html.write("<td width=100><font class=boardtext>%li</font></td>\n",p.perteam[t].deaths); |
|
html.write("<td width=100><font class=boardtext>%.2lf</font></td>\n",rank); |
|
|
|
html.write("</tr>\n"); |
|
totalkills+=p.perteam[t].kills; |
|
totaldeaths+=p.perteam[t].deaths; |
|
teamrank+=rank; |
|
numplrs++; |
|
} |
|
|
|
html.write("<tr>"); |
|
html.write("<td colspan=4><hr></td>"); |
|
html.write("</tr>"); |
|
html.write("<tr>"); |
|
html.write("<td><font class=boardtext>totals</font></td>"); |
|
html.write("<td><font class=boardtext>%li</font></td>",totalkills); |
|
html.write("<td><font class=boardtext>%li</font></td>",totaldeaths); |
|
html.write("<td><font class=boardtext>%.2lf (avg)</font></td>",teamrank/numplrs); |
|
html.write("</tr>"); |
|
html.write("</table>\n<p>\n"); |
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|