本文整理汇总了C++中TdfParser::SectionExist方法的典型用法代码示例。如果您正苦于以下问题:C++ TdfParser::SectionExist方法的具体用法?C++ TdfParser::SectionExist怎么用?C++ TdfParser::SectionExist使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TdfParser
的用法示例。
在下文中一共展示了TdfParser::SectionExist方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadSkirmishAIs
void CGameSetup::LoadSkirmishAIs(const TdfParser& file, std::set<std::string>& nameList)
{
// i = AI index in game (no gaps), a = AI index in script
for (int a = 0; a < MAX_PLAYERS; ++a) {
char section[50];
sprintf(section, "GAME\\AI%i\\", a);
string s(section);
if (!file.SectionExist(s.substr(0, s.length() - 1))) {
continue;
}
SkirmishAIData data;
data.team = atoi(file.SGetValueDef("-1", s + "Team").c_str());
if (data.team == -1) {
throw content_error("missing AI.Team in GameSetup script");
}
data.hostPlayer = atoi(file.SGetValueDef("-1", s + "Host").c_str());
if (data.hostPlayer == -1) {
throw content_error("missing AI.Host in GameSetup script");
}
data.shortName = file.SGetValueDef("", s + "ShortName");
if (data.shortName == "") {
throw content_error("missing AI.ShortName in GameSetup script");
}
data.version = file.SGetValueDef("", s + "Version");
if (file.SectionExist(s + "Options")) {
data.options = file.GetAllValues(s + "Options");
std::map<std::string, std::string>::const_iterator kv;
for (kv = data.options.begin(); kv != data.options.end(); ++kv) {
data.optionKeys.push_back(kv->first);
}
}
// get the visible name (comparable to player-name)
std::string name = file.SGetValueDef(data.shortName, s + "Name");
int instanceIndex = 0;
std::string name_unique = name;
while (nameList.find(name_unique) != nameList.end()) {
name_unique = name + "_" + IntToString(instanceIndex++);
// so we possibly end up with something like myBot_0, or RAI_2
}
data.name = name_unique;
nameList.insert(data.name);
skirmishAIStartingData.push_back(data);
}
}
示例2: LoadAllyTeams
void CGameSetup::LoadAllyTeams(const TdfParser& file)
{
// i = allyteam index in game (no gaps), a = allyteam index in script
int i = 0;
for (int a = 0; a < MAX_TEAMS; ++a) {
char section[50];
sprintf(section,"GAME\\ALLYTEAM%i",a);
string s(section);
if (!file.SectionExist(s))
continue;
AllyTeam data;
std::map<std::string, std::string> setup = file.GetAllValues(s);
for (std::map<std::string, std::string>::const_iterator it = setup.begin(); it != setup.end(); ++it)
data.SetValue(it->first, it->second);
allyStartingData.push_back(data);
allyteamRemap[a] = i;
++i;
}
{
const size_t numAllyTeams = allyStartingData.size();
for (size_t a = 0; a < numAllyTeams; ++a) {
allyStartingData[a].allies.resize(numAllyTeams, false);
allyStartingData[a].allies[a] = true; // each team is allied with itself
std::ostringstream section;
section << "GAME\\ALLYTEAM" << a << "\\";
const size_t numAllies = atoi(file.SGetValueDef("0", section.str() + "NumAllies").c_str());
for (size_t b = 0; b < numAllies; ++b) {
std::ostringstream key;
key << "GAME\\ALLYTEAM" << a << "\\Ally" << b;
const int other = atoi(file.SGetValueDef("0",key.str()).c_str());
allyStartingData[a].allies[allyteamRemap[other]] = true;
}
}
}
unsigned allyCount = 0;
if (file.GetValue(allyCount, "GAME\\NumAllyTeams") && (allyStartingData.size() != allyCount)) {
LOG_L(L_WARNING, "Incorrect number of ally teams in GameSetup script");
}
}
示例3: LoadPlayers
void CGameSetup::LoadPlayers(const TdfParser& file, std::set<std::string>& nameList)
{
numDemoPlayers = 0;
// i = player index in game (no gaps), a = player index in script
int i = 0;
for (int a = 0; a < MAX_PLAYERS; ++a) {
char section[50];
sprintf(section, "GAME\\PLAYER%i", a);
string s(section);
if (!file.SectionExist(s)) {
continue;
}
PlayerBase data;
// expects lines of form team=x rather than team=TEAMx
// team field is relocated in RemapTeams
std::map<std::string, std::string> setup = file.GetAllValues(s);
for (std::map<std::string, std::string>::const_iterator it = setup.begin(); it != setup.end(); ++it)
data.SetValue(it->first, it->second);
// do checks for sanity
if (data.name.empty())
throw content_error(str( boost::format("GameSetup: No name given for Player %i") %a ));
if (nameList.find(data.name) != nameList.end())
throw content_error(str(boost::format("GameSetup: Player %i has name %s which is already taken") %a %data.name.c_str() ));
nameList.insert(data.name);
if (data.isFromDemo)
numDemoPlayers++;
playerStartingData.push_back(data);
playerRemap[a] = i;
++i;
}
unsigned playerCount = 0;
if (file.GetValue(playerCount, "GAME\\NumPlayers") && playerStartingData.size() != playerCount) {
LOG_L(L_WARNING,
_STPF_ " players in GameSetup script (NumPlayers says %i)",
playerStartingData.size(), playerCount);
}
}