本文整理汇总了C++中LuaTable::GetString方法的典型用法代码示例。如果您正苦于以下问题:C++ LuaTable::GetString方法的具体用法?C++ LuaTable::GetString怎么用?C++ LuaTable::GetString使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LuaTable
的用法示例。
在下文中一共展示了LuaTable::GetString方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadGlobal
void CMapInfo::ReadGlobal()
{
const LuaTable topTable = *mapRoot;
map.humanName = topTable.GetString("description", map.name);
map.wantedScript = topTable.GetString("script", map.wantedScript);
map.hardness = topTable.GetFloat("maphardness", 100.0f);
map.notDeformable = topTable.GetBool("notDeformable", false);
map.gravity = topTable.GetFloat("gravity", 130.0f);
map.gravity = max(0.001f, map.gravity);
map.gravity = -map.gravity / (GAME_SPEED * GAME_SPEED);
map.tidalStrength = topTable.GetFloat("tidalStrength", 0.0f);
map.maxMetal = topTable.GetFloat("maxMetal", 0.02f);
map.extractorRadius = topTable.GetFloat("extractorRadius", 500.0f);
map.voidWater = topTable.GetBool("voidWater", false);
// clamps
map.hardness = max(0.0f, map.hardness);
map.tidalStrength = max(0.0f, map.tidalStrength);
map.maxMetal = max(0.0f, map.maxMetal);
map.extractorRadius = max(0.0f, map.extractorRadius);
}
示例2: LoadSounds
void CUnitDefHandler::LoadSounds(const LuaTable& soundsTable, GuiSoundSet& gsound, const string& soundName)
{
string fileName = soundsTable.GetString(soundName, "");
if (!fileName.empty()) {
LoadSound(gsound, fileName, 1.0f);
return;
}
LuaTable sndTable = soundsTable.SubTable(soundName);
for (int i = 1; true; i++) {
LuaTable sndFileTable = sndTable.SubTable(i);
if (sndFileTable.IsValid()) {
fileName = sndFileTable.GetString("file", "");
if (!fileName.empty()) {
const float volume = sndFileTable.GetFloat("volume", 1.0f);
if (volume > 0.0f) {
LoadSound(gsound, fileName, volume);
}
}
} else {
fileName = sndTable.GetString(i, "");
if (fileName.empty()) {
break;
}
LoadSound(gsound, fileName, 1.0f);
}
}
}
示例3: LoadSound
void CWeaponDefHandler::LoadSound(const LuaTable& wdTable,
GuiSoundSet& gsound, const string& soundCat)
{
string name = "";
float volume = -1.0f;
if (soundCat == "start") {
name = wdTable.GetString("soundStart", "");
volume = wdTable.GetFloat("soundStartVolume", -1.0f);
}
else if (soundCat == "hit") {
name = wdTable.GetString("soundHit", "");
volume = wdTable.GetFloat("soundHitVolume", -1.0f);
}
if (name != "") {
const int id = LoadSoundFile(name);
if (id > 0)
{
GuiSoundSet::Data soundData(name, 0, volume);
gsound.sounds.push_back(soundData);
gsound.setID(0, id);
}
}
}
示例4: LoadSound
void WeaponDef::LoadSound(
const LuaTable& wdTable,
const std::string& soundKey,
const unsigned int soundIdx,
std::vector<GuiSoundSet::Data>& soundData)
{
string name = "";
int id = -1;
float volume = -1.0f;
soundData.push_back(GuiSoundSet::Data(name, id, volume));
assert(soundIdx < soundData.size());
assert(soundData[soundIdx].id == -1);
if (soundKey == "soundStart") {
name = wdTable.GetString(soundKey, "");
volume = wdTable.GetFloat(soundKey + "Volume", -1.0f);
}
else if (soundKey == "soundHitDry") {
name = wdTable.GetString(soundKey, wdTable.GetString("soundHit", ""));
volume = wdTable.GetFloat(soundKey + "Volume", wdTable.GetFloat("soundHitVolume", -1.0f));
}
else if (soundKey == "soundHitWet") {
name = wdTable.GetString(soundKey, wdTable.GetString("soundHit", ""));
volume = wdTable.GetFloat(soundKey + "Volume", wdTable.GetFloat("soundHitVolume", -1.0f));
}
if (name.empty())
return;
if ((id = CommonDefHandler::LoadSoundFile(name)) <= 0)
return;
soundData[soundIdx] = GuiSoundSet::Data(name, id, volume);
}
示例5: ReadGlobal
void CMapInfo::ReadGlobal()
{
const LuaTable topTable = parser->GetRoot();
map.description = topTable.GetString("description", map.name);
map.author = topTable.GetString("author", "");
map.hardness = topTable.GetFloat("maphardness", 100.0f);
map.notDeformable = topTable.GetBool("notDeformable", false);
map.gravity = topTable.GetFloat("gravity", 130.0f);
map.gravity = max(0.001f, map.gravity);
map.gravity = -map.gravity / (GAME_SPEED * GAME_SPEED);
map.tidalStrength = topTable.GetFloat("tidalStrength", 0.0f);
map.maxMetal = topTable.GetFloat("maxMetal", 0.02f);
map.extractorRadius = topTable.GetFloat("extractorRadius", 500.0f);
map.voidWater = topTable.GetBool("voidWater", false);
// clamps
if (-0.001f < map.hardness && map.hardness <= 0.0f)
map.hardness = -0.001f;
else if (0.0f <= map.hardness && map.hardness < 0.001f)
map.hardness = 0.001f;
map.tidalStrength = max(0.000f, map.tidalStrength);
map.maxMetal = max(0.000f, map.maxMetal);
map.extractorRadius = max(0.000f, map.extractorRadius);
}
示例6: ReadSmf
void CMapInfo::ReadSmf()
{
// SMF specific settings
const LuaTable mapResTable = parser->GetRoot().SubTable("resources");
smf.detailTexName = mapResTable.GetString("detailTex", "");
smf.specularTexName = mapResTable.GetString("specularTex", "");
smf.splatDetailTexName = mapResTable.GetString("splatDetailTex", "");
smf.splatDistrTexName = mapResTable.GetString("splatDistrTex", "");
smf.grassBladeTexName = mapResTable.GetString("grassBladeTex", "");
smf.grassShadingTexName = mapResTable.GetString("grassShadingTex", "");
smf.skyReflectModTexName = mapResTable.GetString("skyReflectModTex", "");
smf.detailNormalTexName = mapResTable.GetString("detailNormalTex", "");
smf.lightEmissionTexName = mapResTable.GetString("lightEmissionTex", "");
if (!smf.detailTexName.empty()) {
smf.detailTexName = "maps/" + smf.detailTexName;
} else {
const LuaTable& resGfxMaps = resRoot->SubTable("graphics").SubTable("maps");
smf.detailTexName = resGfxMaps.GetString("detailtex", "detailtex2.bmp");
smf.detailTexName = "bitmaps/" + smf.detailTexName;
}
if (!smf.specularTexName.empty()) { smf.specularTexName = "maps/" + smf.specularTexName; }
if (!smf.splatDetailTexName.empty()) { smf.splatDetailTexName = "maps/" + smf.splatDetailTexName; }
if (!smf.splatDistrTexName.empty()) { smf.splatDistrTexName = "maps/" + smf.splatDistrTexName; }
if (!smf.grassBladeTexName.empty()) { smf.grassBladeTexName = "maps/" + smf.grassBladeTexName; }
if (!smf.grassShadingTexName.empty()) { smf.grassShadingTexName = "maps/" + smf.grassShadingTexName; }
if (!smf.skyReflectModTexName.empty()) { smf.skyReflectModTexName = "maps/" + smf.skyReflectModTexName; }
if (!smf.detailNormalTexName.empty()) { smf.detailNormalTexName = "maps/" + smf.detailNormalTexName; }
if (!smf.lightEmissionTexName.empty()) { smf.lightEmissionTexName = "maps/" + smf.lightEmissionTexName; }
// height overrides
const LuaTable smfTable = parser->GetRoot().SubTable("smf");
smf.minHeightOverride = smfTable.KeyExists("minHeight");
smf.maxHeightOverride = smfTable.KeyExists("maxHeight");
smf.minHeight = smfTable.GetFloat("minHeight", 0.0f);
smf.maxHeight = smfTable.GetFloat("maxHeight", 0.0f);
std::stringstream ss;
for (int i = 0; /* no test */; i++) {
ss.str("");
ss << "smtFileName" << i;
if (smfTable.KeyExists(ss.str())) {
smf.smtFileNames.push_back(smfTable.GetString(ss.str(), ".smt"));
} else {
break;
}
}
}
示例7: LoadUnits
void CSyncer::LoadUnits(bool checksum)
{
unitsLeft = 0;
LuaParser luaParser("gamedata/defs.lua",
SPRING_VFS_MOD_BASE, SPRING_VFS_ZIP);
if (!luaParser.Execute()) {
logOutput.Print("luaParser.Execute() failed");
return;
}
LuaTable rootTable = luaParser.GetRoot().SubTable("UnitDefs");
if (!rootTable.IsValid()) {
logOutput.Print("root unitdef table invalid");
return;
}
vector<string> unitDefNames;
rootTable.GetKeys(unitDefNames);
const int count = (int)unitDefNames.size();
for (int i = 0; i < count; ++i) {
const string& udName = unitDefNames[i];
LuaTable udTable = rootTable.SubTable(udName);
Unit u;
u.fullName = udTable.GetString("name", udName);
if (checksum) {
const string fileName = udTable.GetString("filename", "");
const string deadName = udTable.GetString("corpse", udName + "_dead");
const string modelName = udTable.GetString("objectname", udName);
u.fbi = CalculateCRC(fileName);
u.cob = CalculateCRC("scripts/" + udName + ".cob");
u.model = CalculateCRC("objects3d/" + modelName); // s3o ?
u.model += CalculateCRC("objects3d/" + modelName + ".3do");
u.model += CalculateCRC("objects3d/" + deadName + ".3do");
}
units[udName] = u;
}
// map the unitIds
map<string, Unit>::iterator mit;
for (mit = units.begin(); mit != units.end(); ++mit) {
unitIds.push_back(mit->first);
}
unitsLeft = count;
return;
}
示例8: Load
bool SideParser::Load()
{
dataVec.clear();
errorLog.clear();
LuaParser parser("gamedata/sidedata.lua",
SPRING_VFS_MOD_BASE, SPRING_VFS_MOD_BASE);
#if !defined UNITSYNC && !defined DEDICATED
// this should not be included with unitsync:
// 1. avoids linkage with LuaSyncedRead
// 2. ModOptions are not valid during unitsync mod parsing
parser.GetTable("Spring");
parser.AddFunc("GetModOptions", LuaSyncedRead::GetModOptions);
parser.EndTable();
#endif
if (!parser.Execute()) {
errorLog = parser.GetErrorLog();
return false;
}
set<string> sideSet;
const LuaTable root = parser.GetRoot();
for (int i = 1; /* no-op */; i++) {
const LuaTable sideTable = root.SubTable(i);
if (!sideTable.IsValid()) {
break;
}
Data data;
data.caseName = sideTable.GetString("name", "");
data.sideName = StringToLower(data.caseName);
data.startUnit = sideTable.GetString("startUnit", "");
data.startUnit = StringToLower(data.startUnit);
if (data.sideName.empty()) {
logOutput.Print("Missing side name: %i", i);
}
else if (data.startUnit.empty()) {
logOutput.Print("Missing side start unit: " + data.sideName);
}
else {
if (sideSet.find(data.sideName) != sideSet.end()) {
logOutput.Print("Duplicate side name: " + data.sideName);
}
else {
sideSet.insert(data.sideName);
dataVec.push_back(data);
}
}
}
return true;
}
示例9: resourcesParser
CGroundDecalHandler::CGroundDecalHandler(void)
{
drawDecals = false;
decalLevel = std::max(0, configHandler->Get("GroundDecals", 1));
groundScarAlphaFade = configHandler->Get("GroundScarAlphaFade", 0);
if (decalLevel == 0) {
return;
}
drawDecals = true;
unsigned char* buf=new unsigned char[512*512*4];
memset(buf,0,512*512*4);
LuaParser resourcesParser("gamedata/resources.lua",
SPRING_VFS_MOD_BASE, SPRING_VFS_ZIP);
if (!resourcesParser.Execute()) {
logOutput.Print(resourcesParser.GetErrorLog());
}
const LuaTable scarsTable = resourcesParser.GetRoot().SubTable("graphics").SubTable("scars");
LoadScar("bitmaps/" + scarsTable.GetString(2, "scars/scar2.bmp"), buf, 0, 0);
LoadScar("bitmaps/" + scarsTable.GetString(3, "scars/scar3.bmp"), buf, 256, 0);
LoadScar("bitmaps/" + scarsTable.GetString(1, "scars/scar1.bmp"), buf, 0, 256);
LoadScar("bitmaps/" + scarsTable.GetString(4, "scars/scar4.bmp"), buf, 256, 256);
glGenTextures(1, &scarTex);
glBindTexture(GL_TEXTURE_2D, scarTex);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBuildMipmaps(GL_TEXTURE_2D,GL_RGBA8 ,512, 512, GL_RGBA, GL_UNSIGNED_BYTE, buf);
scarFieldX=gs->mapx/32;
scarFieldY=gs->mapy/32;
scarField=new std::set<Scar*>[scarFieldX*scarFieldY];
lastTest=0;
maxOverlap=decalLevel+1;
delete[] buf;
if (shadowHandler->canUseShadows) {
decalVP = LoadVertexProgram("ARB/GroundDecals.vp");
decalFPsmf = LoadFragmentProgram("ARB/GroundDecalsSMF.fp");
decalFPsm3 = LoadFragmentProgram("ARB/GroundDecalsSM3.fp");
}
}
示例10: ReadSmf
void CMapInfo::ReadSmf()
{
// SMF specific settings
const LuaTable mapResTable = mapRoot->SubTable("resources");
smf.detailTexName = mapResTable.GetString("detailTex", "");
if (!smf.detailTexName.empty()) {
smf.detailTexName = "maps/" + smf.detailTexName;
}
else {
const LuaTable resGfxMaps = resRoot->SubTable("graphics").SubTable("maps");
smf.detailTexName = resGfxMaps.GetString("detailtex", "detailtex2.bmp");
smf.detailTexName = "bitmaps/" + smf.detailTexName;
}
}
示例11: ReadTerrainTypes
void CMapInfo::ReadTerrainTypes()
{
const LuaTable terrTypeTable =
mapRoot->SubTable("terrainTypes");
for (int tt = 0; tt < 256; tt++) {
TerrainType& terrType = terrainTypes[tt];
const LuaTable terrain = terrTypeTable.SubTable(tt);
terrType.name = terrain.GetString("name", "Default");
terrType.hardness = terrain.GetFloat("hardness", 1.0f);
terrType.receiveTracks = terrain.GetBool("receiveTracks", true);
const LuaTable moveTable = terrain.SubTable("moveSpeeds");
terrType.tankSpeed = moveTable.GetFloat("tank", 1.0f);
terrType.kbotSpeed = moveTable.GetFloat("kbot", 1.0f);
terrType.hoverSpeed = moveTable.GetFloat("hover", 1.0f);
terrType.shipSpeed = moveTable.GetFloat("ship", 1.0f);
// clamps
terrType.hardness = max(0.0f, terrType.hardness);
terrType.tankSpeed = max(0.0f, terrType.tankSpeed);
terrType.kbotSpeed = max(0.0f, terrType.kbotSpeed);
terrType.hoverSpeed = max(0.0f, terrType.hoverSpeed);
terrType.shipSpeed = max(0.0f, terrType.shipSpeed);
}
}
示例12: SetPieceParentName
void CAssParser::SetPieceParentName(
SAssPiece* piece,
const S3DModel* model,
const aiNode* pieceNode,
const LuaTable& pieceTable,
ParentNameMap& parentMap
) {
// Get parent name from metadata or model
if (pieceTable.KeyExists("parent")) {
parentMap[piece] = pieceTable.GetString("parent", "");
return;
}
if (pieceNode->mParent == nullptr)
return;
if (pieceNode->mParent->mParent != nullptr) {
// parent is not the root
parentMap[piece] = std::string(pieceNode->mParent->mName.data);
} else {
// parent is the root (which must already exist)
assert(model->GetRootPiece() != nullptr);
parentMap[piece] = (model->GetRootPiece())->name;
}
}
示例13: content_error
CDamageArrayHandler::CDamageArrayHandler(LuaParser* defsParser)
{
#define DEFAULT_ARMORDEF_NAME "default"
try {
const LuaTable rootTable = defsParser->GetRoot().SubTable("ArmorDefs");
if (!rootTable.IsValid())
throw content_error("Error loading ArmorDefs");
// GetKeys() sorts the keys, so can not simply push_back before call
rootTable.GetKeys(armorDefKeys);
armorDefKeys.insert(armorDefKeys.begin(), DEFAULT_ARMORDEF_NAME);
armorDefNameIdxMap[DEFAULT_ARMORDEF_NAME] = 0;
LOG("[%s] number of ArmorDefs: " _STPF_, __FUNCTION__, armorDefKeys.size());
// expects the following structure, subtables must be in array-format:
//
// {"tanks" = {[1] = "supertank", [2] = "megatank"}, "infantry" = {[1] = "dude"}, ...}
//
// the old (pre-95.0) <key, value> subtable definitions are no longer supported!
//
for (unsigned int armorDefIdx = 1; armorDefIdx < armorDefKeys.size(); armorDefIdx++) {
const std::string armorDefName = StringToLower(armorDefKeys[armorDefIdx]);
if (armorDefName == DEFAULT_ARMORDEF_NAME) {
// ignore, no need to clear entire table
LOG_L(L_WARNING, "[%s] ArmorDefs: tried to define the \"%s\" armor type!", __FUNCTION__, DEFAULT_ARMORDEF_NAME);
continue;
}
armorDefNameIdxMap[armorDefName] = armorDefIdx;
const LuaTable armorDefTable = rootTable.SubTable(armorDefKeys[armorDefIdx]);
const unsigned int numArmorDefEntries = armorDefTable.GetLength();
for (unsigned int armorDefEntryIdx = 0; armorDefEntryIdx < numArmorDefEntries; armorDefEntryIdx++) {
const std::string& unitDefName = StringToLower(armorDefTable.GetString(armorDefEntryIdx + 1, ""));
const auto armorDefTableIt = armorDefNameIdxMap.find(unitDefName);
if (armorDefTableIt == armorDefNameIdxMap.end()) {
armorDefNameIdxMap[unitDefName] = armorDefIdx;
continue;
}
LOG_L(L_WARNING,
"[%s] UnitDef \"%s\" in ArmorDef \"%s\" already belongs to ArmorDef category %d!",
__FUNCTION__, unitDefName.c_str(), armorDefName.c_str(), armorDefTableIt->second);
}
}
} catch (const content_error&) {
armorDefNameIdxMap.clear();
armorDefNameIdxMap[DEFAULT_ARMORDEF_NAME] = 0;
armorDefKeys.clear();
armorDefKeys.push_back(DEFAULT_ARMORDEF_NAME);
}
}
示例14: Parse
void SolidObjectDecalDef::Parse(const LuaTable& table) {
groundDecalTypeName = table.GetString("groundDecalType", table.GetString("buildingGroundDecalType", ""));
trackDecalTypeName = table.GetString("trackType", "StdTank");
useGroundDecal = table.GetBool("useGroundDecal", table.GetBool("useBuildingGroundDecal", false));
groundDecalType = -1;
groundDecalSizeX = table.GetInt("groundDecalSizeX", table.GetInt("buildingGroundDecalSizeX", 4));
groundDecalSizeY = table.GetInt("groundDecalSizeY", table.GetInt("buildingGroundDecalSizeY", 4));
groundDecalDecaySpeed = table.GetFloat("groundDecalDecaySpeed", table.GetFloat("buildingGroundDecalDecaySpeed", 0.1f));
leaveTrackDecals = table.GetBool("leaveTracks", false);
trackDecalType = -1;
trackDecalWidth = table.GetFloat("trackWidth", 32.0f);
trackDecalOffset = table.GetFloat("trackOffset", 0.0f);
trackDecalStrength = table.GetFloat("trackStrength", 0.0f);
trackDecalStretch = table.GetFloat("trackStretch", 1.0f);
}
示例15: StartServer
void CPreGame::StartServer(const std::string& setupscript)
{
assert(!gameServer);
GameData* startupData = new GameData();
CGameSetup* setup = new CGameSetup();
setup->Init(setupscript);
startupData->SetRandomSeed(static_cast<unsigned>(gu->usRandInt()));
if (! setup->mapName.empty())
{
// would be better to use MapInfo here, but this doesn't work
LoadMap(setup->mapName); // map into VFS
std::string mapDefFile;
const std::string extension = setup->mapName.substr(setup->mapName.length()-3);
if (extension == "smf")
mapDefFile = std::string("maps/")+setup->mapName.substr(0,setup->mapName.find_last_of('.'))+".smd";
else if(extension == "sm3")
mapDefFile = string("maps/")+setup->mapName;
else
throw std::runtime_error("CPreGame::StartServer(): Unknown extension: " + extension);
MapParser mp(setup->mapName);
LuaTable mapRoot = mp.GetRoot();
const std::string mapWantedScript = mapRoot.GetString("script", "");
const std::string scriptFile = mapRoot.GetString("scriptFile", "");
if (!mapWantedScript.empty()) {
setup->scriptName = mapWantedScript;
}
}
// here we now the name of the script to use
CScriptHandler::SelectScript(setup->scriptName);
std::string scriptWantedMod;
scriptWantedMod = CScriptHandler::Instance().chosenScript->GetModName();
if (!scriptWantedMod.empty()) {
setup->modName = archiveScanner->ModArchiveToModName(scriptWantedMod);
}
LoadMod(setup->modName);
std::string modArchive = archiveScanner->ModNameToModArchive(setup->modName);
startupData->SetModChecksum(archiveScanner->GetModChecksum(modArchive));
std::string mapFromScript = CScriptHandler::Instance().chosenScript->GetMapName();
if (!mapFromScript.empty() && setup->mapName != mapFromScript) {
//TODO unload old map
LoadMap(mapFromScript, true);
}
startupData->SetMapChecksum(archiveScanner->GetMapChecksum(setup->mapName));
setup->LoadStartPositions();
good_fpu_control_registers("before CGameServer creation");
startupData->SetSetup(setup->gameSetupText);
gameServer = new CGameServer(settings.get(), false, startupData, setup);
gameServer->AddLocalClient(settings->myPlayerName, SpringVersion::GetFull());
good_fpu_control_registers("after CGameServer creation");
}