80 lines
2.4 KiB
C++
80 lines
2.4 KiB
C++
|
//========= 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;
|
||
|
}
|
||
|
|