本文整理汇总了C++中TdfParser::SGetValueDef方法的典型用法代码示例。如果您正苦于以下问题:C++ TdfParser::SGetValueDef方法的具体用法?C++ TdfParser::SGetValueDef怎么用?C++ TdfParser::SGetValueDef使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TdfParser
的用法示例。
在下文中一共展示了TdfParser::SGetValueDef方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Parse
void ShaderDef::Parse(const TdfParser& tdf, bool needNormalMap)
{
string path = "map\\terrain\\";
int numStages = atoi(tdf.SGetValueDef("0", path + "NumTextureStages").c_str());
bool autoBumpMap = !!atoi(tdf.SGetValueDef("1", path + "AutoBumpmapStages").c_str());
bool autoSpecular = !!atoi(tdf.SGetValueDef("1", path + "AutoSpecularStages").c_str());
specularExponent = atof(tdf.SGetValueDef("8", path + "SpecularExponent").c_str());
LoadStages(numStages, "texstage", tdf, stages);
if (needNormalMap) {
// generate the bumpmap stages from the texture stages?
if (autoBumpMap)
{
for (uint a=0;a<stages.size();a++)
{
Stage& st = stages[a];
if (a && st.operation != Alpha && st.operation != Blend)
continue;
normalMapStages.push_back (Stage());
Stage& bmst = normalMapStages.back();
bmst.operation = st.operation;
bmst.sourceName = st.sourceName;
}
}
else {
// otherwise load them from the bmstage list
numStages = atoi(tdf.SGetValueDef("0", path + "NumBumpmapStages").c_str());
LoadStages(numStages, "bmstage", tdf, normalMapStages);
}
}
}
示例2: ProcessUnits
int CSyncer::ProcessUnits(bool checksum)
{
if (!populated) {
//Populate the list of unit files to consider
files = CFileHandler::FindFiles("units/*.fbi");
populated = true;
}
if (files.size() == 0) {
return 0;
}
string curFile = files.back();
files.pop_back();
size_t len = curFile.find_last_of("/")+1;
string unitName = curFile.substr(len, curFile.size() - 4 - len);
transform(unitName.begin(), unitName.end(), unitName.begin(), (int (*)(int))tolower);
string perror("");
TdfParser *parser = new TdfParser();
try {
parser->LoadFile("units/" + unitName + ".fbi");
} catch (TdfParser::parse_error& pe) {
perror = unitName + " (" + string(pe.what()) + ")";
}
Unit u;
if (checksum) {
u.fbi = CalculateCRC("units/" + unitName + ".fbi");
u.cob = CalculateCRC("scripts/" + unitName + ".cob");
//The model filenames has to be figured out from the fbi file
string modelName = parser->SGetValueDef(unitName, "unitinfo\\Objectname");
string deadName = parser->SGetValueDef(unitName + "_dead", "unitinfo\\Corpse");
u.model = CalculateCRC("objects3d/" + modelName + ".3do");
u.model += CalculateCRC("objects3d/" + deadName + ".3do");
}
u.fullName = parser->SGetValueDef("unknown", "unitinfo\\Name");
if (perror.length() > 0)
u.fullName = perror;
units[unitName] = u;
delete parser;
//If we are done, map id numbers to names
if (files.size() == 0) {
MapUnitIds();
}
return (int)files.size();
}
示例3: 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);
}
}
示例4: 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");
}
}
示例5: LoadMutators
void CGameSetup::LoadMutators(const TdfParser& file, std::vector<std::string>& mutatorsList)
{
for (int a = 0; a < 10; ++a) {
std::string s = file.SGetValueDef("", IntToString(a, "GAME\\MUTATOR%i"));
if (s.empty()) break;
mutatorsList.push_back(s);
}
}
示例6: LoadStages
void ShaderDef::LoadStages(int numStages,const char *stagename, const TdfParser& tdf, std::vector<ShaderDef::Stage>& stages)
{
for (int a=0;a<numStages;a++)
{
string path = "map\\terrain\\";
char num[10];
SNPRINTF(num, 10, "%d", a);
string ts = path + stagename + num + "\\";
string opstr = tdf.SGetValueDef("mul", ts + "operation");
struct { StageOp op; const char *str; } tbl[] =
{
{ Mul, "mul" },
{ Add, "add" },
{ Alpha, "alpha" },
{ Blend, "blend" },
{ Mul, 0 },
};
StageOp operation = Mul;
for (int i = 0; tbl[i].str; i++)
{
if (opstr == tbl[i].str) {
operation = tbl[i].op;
break;
}
}
if (operation == Blend)
{
// insert an alpha stage before the blend stage
stages.push_back(Stage());
stages.back().sourceName = tdf.SGetValueDef(string(), ts + "blender");
stages.back().operation = Alpha;
}
stages.push_back(Stage());
stages.back().sourceName = tdf.SGetValueDef(string(), ts + "source");
stages.back().operation = operation;
if (stages.back().sourceName.empty())
throw content_error(ts + " does not have a source texture");
}
}
示例7: LoadSound
void CUnitDefHandler::LoadSound(TdfParser &tdfparser, GuiSound &gsound, std::string sunname)
{
soundcategory.GetDef(gsound.name, "", tdfparser.SGetValueDef("", "UNITINFO\\SoundCategory")+"\\"+sunname);
if(gsound.name.compare("")==0)
gsound.id = 0;
else
{
CFileHandler file("sounds/"+gsound.name+".wav");
if(file.FileExists())
gsound.id = sound->GetWaveId(gsound.name+".wav");
else
gsound.id = 0;
}
gsound.volume = 5.0f;
}
示例8: LoadUnitRestrictions
void CGameSetup::LoadUnitRestrictions(const TdfParser& file)
{
int numRestrictions;
file.GetDef(numRestrictions, "0", "GAME\\NumRestrictions");
for (int i = 0; i < numRestrictions; ++i) {
char key[100];
sprintf(key, "GAME\\RESTRICT\\Unit%d", i);
string resName = file.SGetValueDef("", key);
sprintf(key, "GAME\\RESTRICT\\Limit%d", i);
int resLimit;
file.GetDef(resLimit, "0", key);
restrictedUnits[resName] = resLimit;
}
}
示例9: ParseSettings
void CReadMap::ParseSettings(TdfParser& resources)
{
gs->sunVector=mapDefParser.GetFloat3(float3(0,1,2),"MAP\\LIGHT\\SunDir");
gs->sunVector.Normalize();
gs->sunVector4[0]=gs->sunVector[0];
gs->sunVector4[1]=gs->sunVector[1];
gs->sunVector4[2]=gs->sunVector[2];
gs->sunVector4[3]=0;
gs->gravity=-atof(mapDefParser.SGetValueDef("130","MAP\\Gravity").c_str())/(GAME_SPEED*GAME_SPEED);
float3 fogColor=mapDefParser.GetFloat3(float3(0.7,0.7,0.8),"MAP\\ATMOSPHERE\\FogColor");
FogLand[0]=fogColor[0];
FogLand[1]=fogColor[1];
FogLand[2]=fogColor[2];
mapDefParser.GetDef(skyBox, "", "MAP\\ATMOSPHERE\\SkyBox");
std::string tmp;
mapDefParser.GetDef(tmp, "", "MAP\\WATER\\WaterPlaneColor");
if(tmp.empty())
hasWaterPlane=0;
else
{
hasWaterPlane = 1;
waterPlaneColor = mapDefParser.GetFloat3(float3(0.0,0.4,0.0),"MAP\\WATER\\WaterPlaneColor");
}
mapDefParser.GetDef(tidalStrength, "0", "MAP\\TidalStrength");
waterSurfaceColor=mapDefParser.GetFloat3(float3(0.75,0.8,0.85),"MAP\\WATER\\WaterSurfaceColor");
waterAbsorb=mapDefParser.GetFloat3(float3(0,0,0),"MAP\\WATER\\WaterAbsorb");
waterBaseColor=mapDefParser.GetFloat3(float3(0,0,0),"MAP\\WATER\\WaterBaseColor");
waterMinColor=mapDefParser.GetFloat3(float3(0,0,0),"MAP\\WATER\\WaterMinColor");
mapDefParser.GetDef(waterTexture, "", "MAP\\WATER\\WaterTexture");
if(waterTexture.empty()) //default water is ocean.jpg in bitmaps, map specific water textures is saved in the map dir
waterTexture = "bitmaps/"+resources.SGetValueDef("ocean.jpg","resources\\graphics\\maps\\watertex");
else
waterTexture = "maps/" + waterTexture;
ambientColor=mapDefParser.GetFloat3(float3(0.5,0.5,0.5),"MAP\\LIGHT\\GroundAmbientColor");
sunColor=mapDefParser.GetFloat3(float3(0.5,0.5,0.5),"MAP\\LIGHT\\GroundSunColor");
mapDefParser.GetDef(shadowDensity, "0.8", "MAP\\LIGHT\\GroundShadowDensity");
mapDefParser.GetDef(maxMetal,"0.02","MAP\\MaxMetal");
mapDefParser.GetDef(extractorRadius,"500","MAP\\ExtractorRadius");
mapDefParser.GetDef(voidWater, "0", "MAP\\voidWater");
}
示例10: CreateUIElement
// this function recursively constructs the view hierarchy from a suitable tdf.
void GUIdialogController::CreateUIElement(TdfParser & parser, GUIframe* parent, const string& path)
{
GUIframe *frame=NULL;
// get properties
string type=parser.SGetValueDef("none", path+"\\type");
string identifier=parser.SGetValueDef("", path+"\\id");
string tooltip=parser.SGetValueDef("", path+"\\tooltip");
float x=atof(parser.SGetValueDef("-1", path+"\\x").c_str());
float y=atof(parser.SGetValueDef("-1", path+"\\y").c_str());
float w=atof(parser.SGetValueDef("-1", path+"\\w").c_str());
float h=atof(parser.SGetValueDef("-1", path+"\\h").c_str());
float x2=atof(parser.SGetValueDef("-1", path+"\\x2").c_str());
float y2=atof(parser.SGetValueDef("-1", path+"\\y2").c_str());
string caption=parser.SGetValueDef("No Caption", path+"\\caption");
// scale the frame
{
#define ScaleX(a) if(a<=1.0&&a>=0.0) a*=parent->w;
#define ScaleY(a) if(a<=1.0&&a>=0.0) a*=parent->h;
ScaleX(x);
ScaleX(x2);
ScaleX(w);
ScaleY(y);
ScaleY(y2);
ScaleY(h);
if(x<0)
{
// x is not set, require w and x2
x=parent->w-x2-w;
}
else if (w<0)
{
if(x2>=0)
w=parent->w-x2-x; // w is not set but x2 is
else
w=0; // neither w nor x2 are set; may happen for autosizing buttons
}
if(y<0)
{
// y is not set, require h and y2
y=parent->h-y2-h;
}
else if (h<0)
{
if(y2>=0)
h=parent->h-y2-y; // w is not set but x2 is
else
h=0; // neither w nor x2 are set
}
}
// create respective control
if(type=="none")
{
frame=parent;
}
else if(type=="buildmenu")
{
GUIbuildMenu *bm=new GUIbuildMenu((int)x, (int)y, (int)w, (int)h, makeFunctor((Functor1<UnitDef*>*)0, *this, &GUIdialogController::BuildMenuClicked));
float num=atof(parser.SGetValueDef("64", path+"\\buildpicsize").c_str());
ScaleX(num);
bm->SetBuildPicSize((int)num);
frame=bm;
}
else if(type=="centerbuildmenu")
{
GUIbuildMenu *bm=new GUIcenterBuildMenu((int)x, (int)y, (int)w, (int)h, makeFunctor((Functor1<UnitDef*>*)0, *this, &GUIdialogController::BuildMenuClicked));
float num=atof(parser.SGetValueDef("64", path+"\\buildpicsize").c_str());
ScaleX(num);
bm->SetBuildPicSize((int)num);
frame=bm;
}
else if(type=="frame")
{
frame=new GUIframe((int)x, (int)y, (int)w, (int)h);
}
else if(type=="minimap")
{
frame=new GUIminimap();
}
else if(type=="tab")
{
frame=new GUItab((int)x, (int)y, (int)w, (int)h);
}
else if(type=="table")
{
GUItable *table=new GUItable((int)x, (int)y, (int)w, (int)h, NULL, makeFunctor((Functor3<GUItable*, int, int>*)0, *this, &GUIdialogController::TableSelection));
frame=table;
}
//.........这里部分代码省略.........