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.
80 lines
2.4 KiB
80 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Implementation of CCustomAwardList |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//------------------------------------------------------------------------------------------------------ |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#include "CustomAwardList.h" |
|
#include "memdbg.h" |
|
|
|
//------------------------------------------------------------------------------------------------------ |
|
// Function: CCustomAwardList::readCustomAwards |
|
// Purpose: Factory method to read from a file and return a list of custom awards |
|
// Input: mapname - the name of the map determines the rule file to read the awards from |
|
// pmi - a pointer to the Match Info which will be passed to each custom award |
|
// Output: CCustomAwardList* |
|
//------------------------------------------------------------------------------------------------------ |
|
CCustomAwardList* CCustomAwardList::readCustomAwards(string mapname) |
|
{ |
|
char filename[255]; |
|
|
|
g_pApp->os->chdir(g_pApp->ruleDirectory.c_str()); |
|
sprintf(filename,"tfc.%s.rul",mapname.c_str()); |
|
|
|
CTextFile ctf1(filename); |
|
CTextFile ctf2("tfc.rul"); |
|
|
|
if (!ctf1.isValid() && ctf2.isValid()) |
|
{ |
|
if (stricmp(filename,"tfc..rul")==0) |
|
g_pApp->warning("Could not find mapname in the log file, map-specific custom rules will not be used"); |
|
else |
|
g_pApp->warning("Could not find %s, map-specific custom rules will not be used",filename); |
|
} |
|
if (!ctf2.isValid() && ctf1.isValid()) |
|
{ |
|
g_pApp->warning("tfc.rul could not be found. Only map-specific rules will be used"); |
|
} |
|
if (!ctf2.isValid() && !ctf1.isValid()) |
|
{ |
|
g_pApp->warning("Neither tfc.rul nor %s could be found. No custom rules will be used"); |
|
return NULL; |
|
} |
|
|
|
|
|
CCustomAwardList* newList=new TRACKED CCustomAwardList; |
|
bool foundAward=false; |
|
|
|
CCustomAward* pcca=CCustomAward::readCustomAward(ctf1); |
|
while (pcca) |
|
{ |
|
foundAward=true; |
|
newList->theList.push_back(pcca); |
|
pcca=CCustomAward::readCustomAward(ctf1); |
|
} |
|
|
|
pcca=CCustomAward::readCustomAward(ctf2); |
|
while (pcca) |
|
{ |
|
foundAward=true; |
|
newList->theList.push_back(pcca); |
|
pcca=CCustomAward::readCustomAward(ctf2); |
|
} |
|
|
|
if (!foundAward) |
|
{ |
|
delete newList; |
|
g_pApp->warning("Could not find any custom rules in either tfc.rul or %s. No custom rules will be used.\n",filename); |
|
newList=NULL; |
|
} |
|
|
|
return newList; |
|
} |
|
|