本文整理汇总了C++中database::Results::GetInt方法的典型用法代码示例。如果您正苦于以下问题:C++ Results::GetInt方法的具体用法?C++ Results::GetInt怎么用?C++ Results::GetInt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类database::Results
的用法示例。
在下文中一共展示了Results::GetInt方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadDBLookup
/// Helper function to read a single type (as a string) and find its ID in a database table.
/// Assumes the type is in the table's field "Type"
int ReadDBLookup(FDataStream& kStream, const char* szTable, bool* bValid /*= NULL*/)
{
FStringFixedBuffer(sTemp, 256);
kStream >> sTemp;
if (bValid) *bValid = true;
if(sTemp.GetLength() > 0 && sTemp != "NO_TYPE")
{
Database::Connection* pDB = GC.GetGameDatabase();
if(pDB)
{
Database::Results kResults;
CvString szCommand;
szCommand.Format("SELECT ID from %s where Type = ? LIMIT 1", szTable);
if(pDB->Execute(kResults, szCommand.c_str()))
{
kResults.Bind(1, sTemp.c_str());
if(kResults.Step())
{
return kResults.GetInt(0);
}
else
if (bValid) *bValid = false;
}
}
else
if (bValid) *bValid = false;
}
return -1;
}
示例2: RegisterDynamicEnums
//------------------------------------------------------------------------------
void CvLuaEnums::RegisterDynamicEnums(lua_State* L, const char* szTableName, const char* szIdField, const char* szNameField, const char* szCountName)
{
Database::Connection& db = *GC.GetGameDatabase();
Database::Results kResults;
char zSQL[256];
sprintf_s(zSQL, 255, "select %s, %s from %s", szIdField, szNameField, szTableName);
if(db.Execute(kResults, zSQL))
{
while(kResults.Step())
{
const int value = kResults.GetInt(0);
const char* name = kResults.GetText(1);
lua_pushstring(L, name);
lua_pushvalue(L, -1);
lua_pushinteger(L, value);
lua_rawset(L, -4);
lua_rawseti(L, -2, value);
}
}
if(szCountName != NULL)
{
lua_pushstring(L, szCountName);
lua_pushinteger(L, db.Count(szTableName, false));
lua_rawset(L, -3);
}
}
示例3: PopulateArrayByExistence
//------------------------------------------------------------------------------
bool CvDatabaseUtility::PopulateArrayByExistence(int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue)
{
InitializeArray(pArray, MaxRows(szTypeTableName), -1);
std::string strKey = "_PABE_";
strKey.append(szTypeTableName);
strKey.append(szDataTableName);
strKey.append(szFilterColumn);
Database::Results* pResults = GetResults(strKey);
if(pResults == NULL)
{
char szSQL[512];
sprintf_s(szSQL, "select %s.ID from %s inner join %s on %s = %s.Type where %s = ?", szTypeTableName, szDataTableName, szTypeTableName, szTypeColumn, szTypeTableName, szFilterColumn);
pResults = PrepareResults(strKey, szSQL);
if(pResults == NULL)
return false;
}
if(!pResults->Bind(1, szFilterValue, false))
{
CvAssertMsg(false, GetErrorMessage());
return false;
}
int idx = 0;
while(pResults->Step())
{
pArray[idx++] = pResults->GetInt(0);
}
pResults->Reset();
return true;
}
示例4: PopulateArrayByValue
//------------------------------------------------------------------------------
bool CvDatabaseUtility::PopulateArrayByValue(int*& pArray, const char* szTypeTableName, const char* szDataTableName, const char* szTypeColumn, const char* szFilterColumn, const char* szFilterValue, const char* szValueColumn, int iDefaultValue /* = 0 */, int iMinArraySize /* = 0 */)
{
int iSize = MaxRows(szTypeTableName);
InitializeArray(pArray, (iSize<iMinArraySize)?iMinArraySize:iSize, iDefaultValue);
std::string strKey = "_PABV_";
strKey.append(szTypeTableName);
strKey.append(szDataTableName);
strKey.append(szFilterColumn);
strKey.append(szValueColumn);
Database::Results* pResults = GetResults(strKey);
if(pResults == NULL)
{
char szSQL[512];
sprintf_s(szSQL, "select %s.ID, %s from %s inner join %s on %s = %s.Type where %s = ?", szTypeTableName, szValueColumn, szDataTableName, szTypeTableName, szTypeColumn, szTypeTableName, szFilterColumn);
pResults = PrepareResults(strKey, szSQL);
if(pResults == NULL)
return false;
}
if(!pResults->Bind(1, szFilterValue, false))
{
CvAssertMsg(false, GetErrorMessage());
return false;
}
while(pResults->Step())
{
const int idx = pResults->GetInt(0);
const int value = pResults->GetInt(1);
pArray[idx] = value;
}
pResults->Reset();
return true;
}
示例5: MaxRows
//------------------------------------------------------------------------------
int CvDatabaseUtility::MaxRows(const char* szTableName)
{
char szSQL[256] = {0};
sprintf_s(szSQL, "SELECT max(rowid) from %s", szTableName);
Database::Results kResults;
int maxValue = 0;
if(DB.Execute(kResults, szSQL))
{
if(kResults.Step())
{
//Since some rowid's start at 0 in Civ, let's increase this # by 1.
maxValue = kResults.GetInt(0) + 1;
}
}
return maxValue;
}
示例6: CacheResults
//------------------------------------------------------------------------------
bool CvProjectEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
m_iMaxGlobalInstances = kResults.GetInt("MaxGlobalInstances");
m_iMaxTeamInstances = kResults.GetInt("MaxTeamInstances");
m_iProductionCost = kResults.GetInt("Cost");
m_iNukeInterception = kResults.GetInt("NukeInterception");
m_iCultureBranchesRequired = kResults.GetInt("CultureBranchesRequired");
m_iTechShare = kResults.GetInt("TechShare");
m_iVictoryDelayPercent = kResults.GetInt("VictoryDelayPercent");
m_bSpaceship = kResults.GetBool("Spaceship");
m_bAllowsNukes = kResults.GetBool("AllowsNukes");
#if defined(MOD_BALANCE_CORE)
const char* szFreeBuilding = kResults.GetText("FreeBuildingClassIfFirst");
if(szFreeBuilding)
{
m_eFreeBuilding = (BuildingClassTypes)GC.getInfoTypeForString(szFreeBuilding, true);
}
const char* szFreePolicy = kResults.GetText("FreePolicyIfFirst");
if(szFreePolicy)
{
m_eFreePolicy = (PolicyTypes)GC.getInfoTypeForString(szFreePolicy, true);
}
#endif
m_strMovieArtDef = kResults.GetText("MovieDefineTag");
const char* szVictoryPrereq = kResults.GetText("VictoryPrereq");
m_iVictoryPrereq = GC.getInfoTypeForString(szVictoryPrereq, true);
const char* szTechPrereq = kResults.GetText("TechPrereq");
m_iTechPrereq = GC.getInfoTypeForString(szTechPrereq, true);
const char* szEveryoneSpecialUnit = kResults.GetText("EveryoneSpecialUnit");
m_iEveryoneSpecialUnit = GC.getInfoTypeForString(szEveryoneSpecialUnit, true);
const char* szCreateSound = kResults.GetText("CreateSound");
SetCreateSound(szCreateSound);
const char* szAnyonePrereqProject = kResults.GetText("AnyonePrereqProject");
m_iAnyoneProjectPrereq = GC.getInfoTypeForString(szAnyonePrereqProject, true);
//Arrays
const char* szProjectType = GetType();
kUtility.PopulateArrayByValue(m_piResourceQuantityRequirements, "Resources", "Project_ResourceQuantityRequirements", "ResourceType", "ProjectType", szProjectType, "Quantity");
//Victory Thresholds
{
const int iNumVictories = kUtility.MaxRows("Victories");
kUtility.InitializeArray(m_piVictoryThreshold, iNumVictories);
kUtility.InitializeArray(m_piVictoryMinThreshold, iNumVictories);
Database::Results kDBResults;
char szQuery[512] = {0};
sprintf_s(szQuery, "select VictoryType, Threshold, MinThreshold from Project_VictoryThresholds where ProjectType = '%s';", szProjectType);
if(DB.Execute(kDBResults, szQuery))
{
while(kDBResults.Step())
{
const char* szVictoryType = kDBResults.GetText("VictoryType");
const int idx = GC.getInfoTypeForString(szVictoryType, true);
const int iThreshold = kDBResults.GetInt("Threshold");
const int iMinThreshold = kDBResults.GetInt("MinThreshold");
m_piVictoryThreshold[idx] = iThreshold;
m_piVictoryMinThreshold[idx] = iMinThreshold;
}
}
}
kUtility.SetFlavors(m_piFlavorValue, "Project_Flavors", "ProjectType", szProjectType);
kUtility.PopulateArrayByValue(m_piProjectsNeeded, "Projects", "Project_Prereqs", "PrereqProjectType", "ProjectType", szProjectType, "AmountNeeded");
return true;
}
示例7: CacheResults
bool CvCorporationEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
m_iMaxFranchises = kResults.GetInt("MaxFranchises");
m_iNumFreeTradeRoutes = kResults.GetInt("NumFreeTradeRoutes");
m_iTradeRouteLandDistanceModifier = kResults.GetInt("TradeRouteLandDistanceModifier");
m_iTradeRouteSeaDistanceModifier = kResults.GetInt("TradeRouteSeaDistanceModifier");
m_iTradeRouteSpeedModifier = kResults.GetInt("TradeRouteSpeedModifier");
m_iTradeRouteVisionBoost = kResults.GetInt("TradeRouteVisionBoost");
m_bTradeRoutesInvulnerable = kResults.GetBool("TradeRoutesInvulnerable");
m_iTradeRouteRecipientBonus = kResults.GetInt("TradeRouteRecipientBonus");
m_iTradeRouteTargetBonus = kResults.GetInt("TradeRouteTargetBonus");
//References
const char* szTextVal = NULL;
szTextVal = kResults.GetText("HeadquartersBuildingClass");
m_eHeadquartersBuildingClass = (BuildingClassTypes) GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("OfficeBuildingClass");
m_eOfficeBuildingClass = (BuildingClassTypes) GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("FranchiseBuildingClass");
m_eFranchiseBuildingClass = (BuildingClassTypes) GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("OfficeBenefitHelper");
m_strOfficeBenefitHelper = szTextVal;
// This is not ideal, but Corporations are loaded last, and I want an easy way to tell if a building class is owned by a Corporation
// Note: Intellisense may lie here! This will compile (declared as friend)
CvBuildingClassInfo* pkBuildingInfo = GC.getBuildingClassInfo(m_eHeadquartersBuildingClass);
if (pkBuildingInfo)
{
pkBuildingInfo->m_eCorporationType = (CorporationTypes) GetID();
pkBuildingInfo->m_bIsHeadquarters = true;
}
pkBuildingInfo = GC.getBuildingClassInfo(m_eOfficeBuildingClass);
if (pkBuildingInfo)
{
pkBuildingInfo->m_eCorporationType = (CorporationTypes) GetID();
pkBuildingInfo->m_bIsOffice = true;
}
pkBuildingInfo = GC.getBuildingClassInfo(m_eFranchiseBuildingClass);
if (pkBuildingInfo)
{
pkBuildingInfo->m_eCorporationType = (CorporationTypes) GetID();
pkBuildingInfo->m_bIsFranchise = true;
}
const char* szCorporationType = GetType();
kUtility.PopulateArrayByExistence(m_piResourceMonopolyAnd, "Resources", "Corporation_ResourceMonopolyAnds", "ResourceType", "CorporationType", szCorporationType);
kUtility.PopulateArrayByExistence(m_piResourceMonopolyOrs, "Resources", "Corporation_ResourceMonopolyOrs", "ResourceType", "CorporationType", szCorporationType);
kUtility.PopulateArrayByValue(m_piNumFreeResource, "Resources", "Corporation_NumFreeResource", "ResourceType", "CorporationType", szCorporationType, "NumResource");
kUtility.PopulateArrayByValue(m_piUnitResourceProductionModifier, "Resources", "Corporation_UnitResourceProductionModifier", "ResourceType", "CorporationType", szCorporationType, "Modifier");
kUtility.SetYields(m_piTradeRouteCityMod, "Corporation_TradeRouteCityYield", "CorporationType", szCorporationType);
kUtility.SetYields(m_piTradeRouteMod, "Corporation_TradeRouteMod", "CorporationType", szCorporationType);
//BuildingClassYieldChanges
{
kUtility.Initialize2DArray(m_ppiBuildingClassYieldChanges, "BuildingClasses", "Yields");
std::string strKey("Corporation_BuildingClassYieldChanges");
Database::Results* pResults = kUtility.GetResults(strKey);
if (pResults == NULL)
{
pResults = kUtility.PrepareResults(strKey, "select BuildingClasses.ID as BuildingClassID, Yields.ID as YieldID, YieldChange from Corporation_BuildingClassYieldChanges inner join BuildingClasses on BuildingClasses.Type = BuildingClassType inner join Yields on Yields.Type = YieldType where CorporationType = ?");
}
pResults->Bind(1, szCorporationType);
while (pResults->Step())
{
const int BuildingClassID = pResults->GetInt(0);
const int iYieldID = pResults->GetInt(1);
const int iYieldChange = pResults->GetInt(2);
m_ppiBuildingClassYieldChanges[BuildingClassID][iYieldID] = iYieldChange;
}
}
//ResourceYieldChanges
{
kUtility.Initialize2DArray(m_ppaiResourceYieldChange, "Resources", "Yields");
std::string strKey("Corporation_ResourceYieldChanges");
Database::Results* pResults = kUtility.GetResults(strKey);
if (pResults == NULL)
{
pResults = kUtility.PrepareResults(strKey, "select Resources.ID as ResourceID, Yields.ID as YieldID, Yield from Corporation_ResourceYieldChanges inner join Resources on Resources.Type = ResourceType inner join Yields on Yields.Type = YieldType where CorporationType = ?");
}
pResults->Bind(1, szCorporationType);
while (pResults->Step())
{
const int ResourceID = pResults->GetInt(0);
const int YieldID = pResults->GetInt(1);
const int yield = pResults->GetInt(2);
//.........这里部分代码省略.........
示例8: CacheResults
/// Read from XML file
bool CvImprovementEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
//Basic properties
const char* szArtDefineTag = kResults.GetText("ArtDefineTag");
SetArtDefineTag(szArtDefineTag);
m_iGoldMaintenance = kResults.GetInt("GoldMaintenance");
m_iCultureBombRadius = kResults.GetInt("CultureBombRadius");
m_iRequiresXAdjacentLand = kResults.GetInt("RequiresXAdjacentLand");
#if defined(MOD_API_EXTENSIONS)
m_iRequiresXAdjacentWater = kResults.GetInt("RequiresXAdjacentWater");
#endif
#if defined(MOD_GLOBAL_STACKING_RULES)
m_iAdditionalUnits = kResults.GetInt("AdditionalUnits");
#endif
m_iCultureAdjacentSameType = kResults.GetInt("CultureAdjacentSameType");
m_bHillsMakesValid = kResults.GetBool("HillsMakesValid");
#if defined(MOD_GLOBAL_ALPINE_PASSES)
m_bMountainsMakesValid = kResults.GetBool("MountainsMakesValid");
#endif
#if defined(MOD_GLOBAL_PASSABLE_FORTS)
m_bMakesPassable = kResults.GetBool("MakesPassable");
#endif
m_bFreshWaterMakesValid = kResults.GetBool("FreshWaterMakesValid");
m_bRiverSideMakesValid = kResults.GetBool("RiverSideMakesValid");
m_bNoFreshWater = kResults.GetBool("NoFreshWater");
#if defined(MOD_API_EXTENSIONS)
if (MOD_API_EXTENSIONS) {
m_bAddsFreshWater = kResults.GetBool("AddsFreshWater");
}
#endif
m_bRequiresFlatlands = kResults.GetBool("RequiresFlatlands");
m_bRequiresFlatlandsOrFreshWater = kResults.GetBool("RequiresFlatlandsOrFreshWater");
m_bRequiresFeature = kResults.GetBool("RequiresFeature");
m_bRequiresImprovement = kResults.GetBool("RequiresImprovement");
m_bRemovesResource = kResults.GetBool("RemovesResource");
m_bPromptWhenComplete = kResults.GetBool("PromptWhenComplete");
m_bWater = kResults.GetBool("Water");
m_bCoastal = kResults.GetBool("Coastal");
m_bDestroyedWhenPillaged = kResults.GetBool("DestroyedWhenPillaged");
m_bDisplacePillager = kResults.GetBool("DisplacePillager");
m_bBuildableOnResources = kResults.GetBool("BuildableOnResources");
m_eImprovementUsageType = m_bBuildableOnResources ? IMPROVEMENTUSAGE_LANDMARK : IMPROVEMENTUSAGE_BASIC;
m_bBarbarianCamp = kResults.GetBool("BarbarianCamp");
m_bGoody = kResults.GetBool("Goody");
m_bPermanent = kResults.GetBool("Permanent");
m_iTilesPerGoody = kResults.GetInt("TilesPerGoody");
m_iGoodyUniqueRange = kResults.GetInt("GoodyRange");
m_iFeatureGrowthProbability = kResults.GetInt("FeatureGrowth");
m_iUpgradeTime = kResults.GetInt("UpgradeTime");
m_iRiverSideUpgradeMod = kResults.GetInt("RiverSideUpgradeMod");
m_iCoastalLandUpgradeMod = kResults.GetInt("CoastalLandUpgradeMod");
m_iHillsUpgradeMod = kResults.GetInt("HillsUpgradeMod");
m_iFreshWaterUpgradeMod = kResults.GetInt("FreshWaterUpgradeMod");
m_iDefenseModifier = kResults.GetInt("DefenseModifier");
m_iNearbyEnemyDamage = kResults.GetInt("NearbyEnemyDamage");
m_iPillageGold = kResults.GetInt("PillageGold");
m_bOutsideBorders = kResults.GetBool("OutsideBorders");
m_bInAdjacentFriendly = kResults.GetBool("InAdjacentFriendly");
m_bIgnoreOwnership = kResults.GetBool("IgnoreOwnership");
m_bOnlyCityStateTerritory = kResults.GetBool("OnlyCityStateTerritory");
#if defined(MOD_DIPLOMACY_CITYSTATES)
if (MOD_DIPLOMACY_CITYSTATES) {
m_bIsEmbassy = kResults.GetBool("IsEmbassy");
}
#endif
#if defined(MOD_BALANCE_CORE)
const char* szObsoleteTech = kResults.GetText("ObsoleteTech");
m_iGetObsoleteTech = (CivilizationTypes)GC.getInfoTypeForString(szObsoleteTech, true);
m_bAdjacentLake = kResults.GetBool("Lakeside");
m_bAdjacentCity = kResults.GetBool("Cityside");
m_iGrantsVision = kResults.GetInt("GrantsVisionXTiles");
#endif
m_bNoTwoAdjacent = kResults.GetBool("NoTwoAdjacent");
m_bAdjacentLuxury = kResults.GetBool("AdjacentLuxury");
m_bAllowsWalkWater = kResults.GetBool("AllowsWalkWater");
m_bCreatedByGreatPerson = kResults.GetBool("CreatedByGreatPerson");
m_bSpecificCivRequired = kResults.GetBool("SpecificCivRequired");
m_iResourceExtractionMod = kResults.GetInt("ResourceExtractionMod");
m_iLuxuryCopiesSiphonedFromMinor = kResults.GetInt("LuxuryCopiesSiphonedFromMinor");
#if defined(MOD_DIPLOMACY_CITYSTATES)
if (MOD_DIPLOMACY_CITYSTATES) {
m_iImprovementLeagueVotes = kResults.GetInt("ImprovementLeagueVotes");
}
#endif
const char* szCivilizationType = kResults.GetText("CivilizationType");
m_eRequiredCivilization = (CivilizationTypes)GC.getInfoTypeForString(szCivilizationType, true);
#if defined(MOD_BALANCE_CORE)
const char* szImprovementResource = kResults.GetText("ImprovementResource");
m_iImprovementResource = (ResourceTypes)GC.getInfoTypeForString(szImprovementResource, true);
m_iImprovementResourceQuantity = kResults.GetInt("ImprovementResourceQuantity");
const char* szTextVal;
szTextVal = kResults.GetText("UnitFreePromotion");
if(szTextVal != NULL)
{
//.........这里部分代码省略.........
示例9: CacheResults
/// Read from XML file
bool CvImprovementEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
//Basic properties
const char* szArtDefineTag = kResults.GetText("ArtDefineTag");
SetArtDefineTag(szArtDefineTag);
m_iGoldMaintenance = kResults.GetInt("GoldMaintenance");
m_iCultureBombRadius = kResults.GetInt("CultureBombRadius");
m_iCultureAdjacentSameType = kResults.GetInt("CultureAdjacentSameType");
m_bHillsMakesValid = kResults.GetBool("HillsMakesValid");
m_bFreshWaterMakesValid = kResults.GetBool("FreshWaterMakesValid");
m_bRiverSideMakesValid = kResults.GetBool("RiverSideMakesValid");
m_bNoFreshWater = kResults.GetBool("NoFreshWater");
m_bRequiresFlatlands = kResults.GetBool("RequiresFlatlands");
m_bRequiresFlatlandsOrFreshWater = kResults.GetBool("RequiresFlatlandsOrFreshWater");
m_bRequiresFeature = kResults.GetBool("RequiresFeature");
m_bWater = kResults.GetBool("Water");
m_bCoastal = kResults.GetBool("Coastal");
m_bDestroyedWhenPillaged = kResults.GetBool("DestroyedWhenPillaged");
m_bBuildableOnResources = kResults.GetBool("BuildableOnResources");
m_eImprovementUsageType = m_bBuildableOnResources ? IMPROVEMENTUSAGE_LANDMARK : IMPROVEMENTUSAGE_BASIC;
m_bBarbarianCamp = kResults.GetBool("BarbarianCamp");
m_bGoody = kResults.GetBool("Goody");
m_bPermanent = kResults.GetBool("Permanent");
m_iTilesPerGoody = kResults.GetInt("TilesPerGoody");
m_iGoodyUniqueRange = kResults.GetInt("GoodyRange");
m_iFeatureGrowthProbability = kResults.GetInt("FeatureGrowth");
m_iUpgradeTime = kResults.GetInt("UpgradeTime");
m_iRiverSideUpgradeMod = kResults.GetInt("RiverSideUpgradeMod");
m_iCoastalLandUpgradeMod = kResults.GetInt("CoastalLandUpgradeMod");
m_iHillsUpgradeMod = kResults.GetInt("HillsUpgradeMod");
m_iFreshWaterUpgradeMod = kResults.GetInt("FreshWaterUpgradeMod");
m_iDefenseModifier = kResults.GetInt("DefenseModifier");
m_iNearbyEnemyDamage = kResults.GetInt("NearbyEnemyDamage");
m_iPillageGold = kResults.GetInt("PillageGold");
m_bOutsideBorders = kResults.GetBool("OutsideBorders");
m_bInAdjacentFriendly = kResults.GetBool("InAdjacentFriendly");
m_bCreatedByGreatPerson = kResults.GetBool("CreatedByGreatPerson");
m_bSpecificCivRequired = kResults.GetBool("SpecificCivRequired");
m_iResourceExtractionMod = kResults.GetInt("ResourceExtractionMod");
const char* szCivilizationType = kResults.GetText("CivilizationType");
m_eRequiredCivilization = (CivilizationTypes)GC.getInfoTypeForString(szCivilizationType, true);
//References
const char* szWorldsoundscapeAudioScript = kResults.GetText("WorldSoundscapeAudioScript");
if(szWorldsoundscapeAudioScript != NULL)
{
m_iWorldSoundscapeScriptId = gDLL->GetAudioTagIndex(szWorldsoundscapeAudioScript, AUDIOTAG_SOUNDSCAPE);
}
else
{
m_iWorldSoundscapeScriptId = -1;
Remark(1, "Warning: Missing soundscape definition in XML for feature: '%s'", GetType());
}
const char* szImprovementPillage = kResults.GetText("ImprovementPillage");
m_iImprovementPillage = GC.getInfoTypeForString(szImprovementPillage, true);
const char* szImprovementUpgrade = kResults.GetText("ImprovementUpgrade");
m_iImprovementUpgrade = GC.getInfoTypeForString(szImprovementUpgrade, true);
//Arrays
const char* szImprovementType = GetType();
const size_t lenImprovementType = strlen(szImprovementType);
kUtility.PopulateArrayByExistence(m_pbTerrainMakesValid,
"Terrains",
"Improvement_ValidTerrains",
"TerrainType",
"ImprovementType",
szImprovementType);
kUtility.PopulateArrayByExistence(m_pbFeatureMakesValid,
"Features",
"Improvement_ValidFeatures",
"FeatureType",
"ImprovementType",
szImprovementType);
kUtility.SetYields(m_piYieldChange, "Improvement_Yields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piAdjacentCityYieldChange, "Improvement_AdjacentCityYields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piAdjacentMountainYieldChange, "Improvement_AdjacentMountainYieldChanges", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piCoastalLandYieldChange, "Improvement_CoastalLandYields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piFreshWaterChange, "Improvement_FreshWaterYields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piHillsYieldChange, "Improvement_HillsYields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piRiverSideYieldChange, "Improvement_RiverSideYields", "ImprovementType", szImprovementType);
kUtility.SetYields(m_piPrereqNatureYield, "Improvement_PrereqNatureYields", "ImprovementType", szImprovementType);
kUtility.SetFlavors(m_piFlavorValue, "Improvement_Flavors", "ImprovementType", szImprovementType);
{
//Initialize Improvement Resource Types to number of Resources
const int iNumResources = kUtility.MaxRows("Resources");
m_paImprovementResource = FNEW(CvImprovementResourceInfo[iNumResources], c_eCiv5GameplayDLL, 0);
//.........这里部分代码省略.........
示例10: PerformDatabasePostProcessing
//------------------------------------------------------------------------------
bool CvDllDatabaseUtility::PerformDatabasePostProcessing()
{
//Insert any database methods that you would like performed after the database
//has been fully loaded. This method will execute every single time the game
//is run.
//Updates performed here are done AFTER the database has been built or read
//from cache.
Database::Connection* db = GC.GetGameDatabase();
//Update Defines table from references in PostDefines table
db->BeginTransaction();
Database::Results kPostDefines;
//Build insertion statement
Database::Results kInsert;
db->Execute(kInsert, "INSERT INTO Defines(Name, Value) VALUES(?, ?)");
db->SelectAll(kPostDefines, "PostDefines");
while(kPostDefines.Step())
{
const char* szName = kPostDefines.GetText("Name");
const char* szKeyName = kPostDefines.GetText("Key");
const char* szTableName = kPostDefines.GetText("Table");
char szSQL[512];
sprintf_s(szSQL, "select ROWID from %s where Type = '%s' LIMIT 1", szTableName, szKeyName);
Database::Results kLookup;
//Compile the command.
if(db->Execute(kLookup, szSQL))
{
//Run the command.
if(kLookup.Step())
{
//Perform insertion
kInsert.Bind(1, szName);
kInsert.Bind(2, kLookup.GetInt(0));
kInsert.Step();
kInsert.Reset();
}
}
}
// ** Modify ResourceUsage of Resources table **
// Set ResourceUsage to 1 if it's referenced in Unit_ResourceQuantityRequirements
// NOTE: This query could be simplified using the IN operator but when analyzed this
// statement generates faster operations.
const char* szStrategicResource
= "UPDATE Resources SET ResourceUsage = 1 WHERE EXISTS (SELECT * FROM Unit_ResourceQuantityRequirements WHERE ResourceType = Type)";
db->Execute(szStrategicResource);
// Set ResourceUsage to 2 if the Resource has a happiness value greater than 0
const char* szLuxoryResource
= "UPDATE Resources SET ResourceUsage = 2 where Happiness > 0";
db->Execute(szLuxoryResource);
//These are hard-coded GameDefines enum values, let's share them with the database so that they
//get the same amount of love as the DB.
Database::Results kInsertDefine;
if(db->Execute(kInsertDefine, "INSERT OR REPLACE INTO Defines(Name, Value) VALUES(?, ?);"))
{
InsertGameDefine(kInsertDefine, "MAX_CIV_PLAYERS", MAX_CIV_PLAYERS);
InsertGameDefine(kInsertDefine, "MAX_CIV_TEAMS", MAX_CIV_TEAMS);
InsertGameDefine(kInsertDefine, "MAX_MAJOR_CIVS", MAX_MAJOR_CIVS);
InsertGameDefine(kInsertDefine, "MAX_MINOR_CIVS", MAX_MINOR_CIVS);
InsertGameDefine(kInsertDefine, "MAX_PLAYERS", MAX_PLAYERS);
InsertGameDefine(kInsertDefine, "MAX_TEAMS", MAX_TEAMS);
InsertGameDefine(kInsertDefine, "BARBARIAN_PLAYER", BARBARIAN_PLAYER);
InsertGameDefine(kInsertDefine, "BARBARIAN_TEAM", BARBARIAN_TEAM);
#if defined(MOD_GLOBAL_CITY_WORKING)
InsertGameDefine(kInsertDefine, "NUM_CITY_PLOTS", AVG_CITY_PLOTS);
InsertGameDefine(kInsertDefine, "MIN_CITY_RADIUS", MIN_CITY_RADIUS);
InsertGameDefine(kInsertDefine, "MAX_CITY_RADIUS", MAX_CITY_RADIUS);
#else
InsertGameDefine(kInsertDefine, "NUM_CITY_PLOTS", NUM_CITY_PLOTS);
#endif
InsertGameDefine(kInsertDefine, "CITY_HOME_PLOT", CITY_HOME_PLOT);
#if defined(MOD_GLOBAL_CITY_WORKING)
InsertGameDefine(kInsertDefine, "MAX_CITY_RADIUS", MAX_CITY_RADIUS);
InsertGameDefine(kInsertDefine, "MAX_CITY_DIAMETER", (2*MAX_CITY_RADIUS+1));
#else
InsertGameDefine(kInsertDefine, "CITY_PLOTS_RADIUS", CITY_PLOTS_RADIUS);
InsertGameDefine(kInsertDefine, "CITY_PLOTS_DIAMETER", CITY_PLOTS_DIAMETER);
#endif
}
db->EndTransaction();
return true;
}
示例11: AcquireTypes
void CvTypes::AcquireTypes(Database::Connection& db)
{
//ArtifactType
{
typedef std::tr1::unordered_map<std::string, GreatWorkArtifactClass*> LookupTable;
LookupTable kArtifactTypeLookupTable;
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_ANCIENT_RUIN"), &s_eARTIFACT_ANCIENT_RUIN));
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_BARBARIAN_CAMP"), &s_eARTIFACT_BARBARIAN_CAMP));
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_BATTLE_RANGED"), &s_eARTIFACT_BATTLE_RANGED));
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_BATTLE_MELEE"), &s_eARTIFACT_BATTLE_MELEE));
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_RAZED_CITY"), &s_eARTIFACT_RAZED_CITY));
kArtifactTypeLookupTable.insert(make_pair(std::string("ARTIFACT_WRITING"), &s_eARTIFACT_WRITING));
Database::Results kResults;
if(db.Execute(kResults, "SELECT Type, ID from GreatWorkArtifactClasses"))
{
while(kResults.Step())
{
std::string strArtifactType = kResults.GetText(0);
LookupTable::iterator it = kArtifactTypeLookupTable.find(strArtifactType);
if(it != kArtifactTypeLookupTable.end())
{
(*it->second) = static_cast<GreatWorkArtifactClass>(kResults.GetInt(1));
}
}
}
for(LookupTable::iterator it = kArtifactTypeLookupTable.begin(); it != kArtifactTypeLookupTable.end(); ++it)
{
if((*it->second) == NO_GREAT_WORK_ARTIFACT_CLASS)
{
char msg[256] = {0};
sprintf_s(msg, "ArtifactType - %s is used in the DLL but does not exist in the database.", it->first.c_str());
FILogFile* pLog = LOGFILEMGR.GetLog("Gamecore.log", FILogFile::kDontTimeStamp);
pLog->WarningMsg(msg);
CvAssertMsg(false, msg);
}
}
}
//GreatWorkSlots
{
typedef std::tr1::unordered_map<std::string, GreatWorkSlotType*> LookupTable;
LookupTable kTypeLookupTable;
kTypeLookupTable.insert(make_pair(std::string("GREAT_WORK_SLOT_ART_ARTIFACT"), &s_eGREAT_WORK_SLOT_ART_ARTIFACT));
kTypeLookupTable.insert(make_pair(std::string("GREAT_WORK_SLOT_LITERATURE"), &s_eGREAT_WORK_SLOT_LITERATURE));
kTypeLookupTable.insert(make_pair(std::string("GREAT_WORK_SLOT_MUSIC"), &s_eGREAT_WORK_SLOT_MUSIC));
Database::Results kResults;
if(db.Execute(kResults, "SELECT Type, ID from GreatWorkSlots"))
{
while(kResults.Step())
{
std::string strType = kResults.GetText(0);
LookupTable::iterator it = kTypeLookupTable.find(strType);
if(it != kTypeLookupTable.end())
{
(*it->second) = static_cast<GreatWorkSlotType>(kResults.GetInt(1));
}
}
}
for(LookupTable::iterator it = kTypeLookupTable.begin(); it != kTypeLookupTable.end(); ++it)
{
if((*it->second) == NO_GREAT_WORK_SLOT)
{
char msg[256] = {0};
sprintf_s(msg, "GreatWorkSlotType - %s is used in the DLL but does not exist in the database.", it->first.c_str());
FILogFile* pLog = LOGFILEMGR.GetLog("Gamecore.log", FILogFile::kDontTimeStamp);
pLog->WarningMsg(msg);
CvAssertMsg(false, msg);
}
}
}
//MissionTypes
{
typedef std::tr1::unordered_map<std::string, MissionTypes*> LookupTable;
LookupTable kMissionTypesLookupTable;
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_MOVE_TO"), &s_eMISSION_MOVE_TO));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_ROUTE_TO"), &s_eMISSION_ROUTE_TO));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_MOVE_TO_UNIT"), &s_eMISSION_MOVE_TO_UNIT));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_SWAP_UNITS"), &s_eMISSION_SWAP_UNITS));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_SKIP"), &s_eMISSION_SKIP));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_SLEEP"), &s_eMISSION_SLEEP));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_ALERT"), &s_eMISSION_ALERT));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_FORTIFY"), &s_eMISSION_FORTIFY));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_GARRISON"), &s_eMISSION_GARRISON));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_SET_UP_FOR_RANGED_ATTACK"), &s_eMISSION_SET_UP_FOR_RANGED_ATTACK));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_EMBARK"), &s_eMISSION_EMBARK));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_DISEMBARK"), &s_eMISSION_DISEMBARK));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_AIRPATROL"), &s_eMISSION_AIRPATROL));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_HEAL"), &s_eMISSION_HEAL));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_AIRLIFT"), &s_eMISSION_AIRLIFT));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_NUKE"), &s_eMISSION_NUKE));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_PARADROP"), &s_eMISSION_PARADROP));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_AIR_SWEEP"), &s_eMISSION_AIR_SWEEP));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_REBASE"), &s_eMISSION_REBASE));
kMissionTypesLookupTable.insert(make_pair(std::string("MISSION_RANGE_ATTACK"), &s_eMISSION_RANGE_ATTACK));
//.........这里部分代码省略.........
示例12: PrefetchGameData
//.........这里部分代码省略.........
#if defined(MOD_EVENTS_DIPLO_MODIFIERS)
PrefetchCollection(GC.getDiploModifierInfo(), "DiploModifiers");
#endif
//Leaders
PrefetchCollection(GC.getLeaderHeadInfo(), "Leaders");
//Misc
PrefetchCollection(GC.getRouteInfo(), "Routes");
CvNotificationXMLEntries* pkNotificationEntries = GC.GetNotificationEntries();
if(pkNotificationEntries != NULL)
{
PrefetchCollection(pkNotificationEntries->GetNotificationEntries(), "Notifications");
}
//Technologies
PrefetchCollection(GC.getTechInfo(), "Technologies");
//Terrain
PrefetchCollection(GC.getFeatureInfo(), "Features");
PrefetchCollection(GC.getImprovementInfo(), "Improvements");
PrefetchCollection(GC.getResourceClassInfo(), "ResourceClasses");
PrefetchCollection(GC.getResourceInfo(), "Resources");
#if defined(MOD_API_PLOT_YIELDS)
if (MOD_API_PLOT_YIELDS) {
PrefetchCollection(GC.getPlotInfo(), "Plots");
}
#endif
#if defined(MOD_API_UNIFIED_YIELDS)
if (MOD_API_UNIFIED_YIELDS) {
PrefetchCollection(GC.getGreatPersonInfo(), "GreatPersons");
}
#endif
PrefetchCollection(GC.getTerrainInfo(), "Terrains");
PrefetchCollection(GC.getYieldInfo(), "Yields");
//Units
PrefetchCollection(GC.getAutomateInfo(), "Automates");
PrefetchCollection(GC.getBuildInfo(), "Builds");
PrefetchCollection(GC.getCommandInfo(), "Commands");
PrefetchCollection(GC.getControlInfo(), "Controls");
PrefetchCollection(GC.getEntityEventInfo(), "EntityEvents");
PrefetchCollection(GC.getMissionInfo(), "Missions");
PrefetchCollection(GC.getMultiUnitFormationInfo(), "MultiUnitFormations");
PrefetchCollection(GC.getSpecialUnitInfo(), "SpecialUnits");
PrefetchCollection(GC.getUnitClassInfo(), "UnitClasses");
PrefetchCollection(GC.getPromotionInfo(), "UnitPromotions");
PrefetchCollection(GC.getUnitInfo(), "Units");
//Civilizations - must be after buildings and units
PrefetchCollection(GC.getCivilizationInfo(), "Civilizations");
PrefetchCollection(GC.getMinorCivInfo(), "MinorCivilizations");
PrefetchCollection(GC.getTraitInfo(), "Traits");
PrefetchCollection(GC.getReligionInfo(), "Religions");
PrefetchCollection(GC.getBeliefInfo(), "Beliefs");
PrefetchCollection(GC.getLeagueSpecialSessionInfo(), "LeagueSpecialSessions");
PrefetchCollection(GC.getLeagueNameInfo(), "LeagueNames");
PrefetchCollection(GC.getLeagueProjectInfo(), "LeagueProjects");
PrefetchCollection(GC.getLeagueProjectRewardInfo(), "LeagueProjectRewards");
PrefetchCollection(GC.getResolutionInfo(), "Resolutions");
#if defined(MOD_API_ACHIEVEMENTS) || defined(ACHIEVEMENT_HACKS)
PrefetchCollection(GC.getAchievementInfo(), "Achievements");
#endif
//Copy flavors into string array
{
CvDatabaseUtility kUtility;
CvString*& paFlavors = GC.getFlavorTypes();
const int iNumFlavors = kUtility.MaxRows("Flavors");
//GC.getNumFlavorTypes() = iNumFlavors;
GC.setNumFlavorTypes(iNumFlavors);
paFlavors = FNEW(CvString[iNumFlavors], c_eCiv5GameplayDLL, 0);
Database::Results kResults;
if(DB.SelectWhere(kResults, "Flavors", "ID > -1"))
{
while(kResults.Step())
{
const int iFlavor = kResults.GetInt("ID");
CvAssert(iFlavor >= 0 && iFlavor < iNumFlavors);
if(iFlavor >= 0 && iFlavor < iNumFlavors)
{
paFlavors[iFlavor] = kResults.GetText("Type");
}
}
}
else
{
CvAssertMsg(false, DB.ErrorMessage());
}
}
ValidatePrefetchProcess();
return true;
}
示例13: CacheResults
bool CvQuestInfo::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
m_bInternal = kResults.GetBool("Internal");
m_bEnabled = kResults.GetBool("Enabled");
m_bGlobal = kResults.GetBool("Global");
m_bRevokeOnBully = kResults.GetBool("RevokeOnBully");
m_bContest = kResults.GetBool("Contest");
m_iMinPlayers = kResults.GetInt("MinPlayers");
m_iDuration = kResults.GetInt("Duration");
m_iFriendship = kResults.GetInt("Friendship");
m_iBiasFriendly = kResults.GetInt("BiasFriendly");
m_iBiasNeutral = kResults.GetInt("BiasNeutral");
m_iBiasHostile = kResults.GetInt("BiasHostile");
m_iBiasIrrational = kResults.GetInt("BiasIrrational");
m_iBiasMaritime = kResults.GetInt("BiasMaritime");
m_iBiasMercantile = kResults.GetInt("BiasMercantile");
m_iBiasCultured = kResults.GetInt("BiasCultured");
m_iBiasMilitaristic = kResults.GetInt("BiasMilitaristic");
m_iBiasReligious = kResults.GetInt("BiasReligious");
m_strDisabledOnOption = kResults.GetText("DisabledOnOption");
m_strStartSummary = kResults.GetText("StartSummary");
m_strStartMessage = kResults.GetText("StartMessage");
m_strFinishSummary = kResults.GetText("FinishSummary");
m_strFinishMessage = kResults.GetText("FinishMessage");
m_strCancelSummary = kResults.GetText("CancelSummary");
m_strCancelMessage = kResults.GetText("CancelMessage");
return true;
}
示例14: CacheResults
//------------------------------------------------------------------------------
bool CvProjectEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
m_iMaxGlobalInstances = kResults.GetInt("MaxGlobalInstances");
m_iMaxTeamInstances = kResults.GetInt("MaxTeamInstances");
m_iProductionCost = kResults.GetInt("Cost");
m_iNukeInterception = kResults.GetInt("NukeInterception");
m_iCultureBranchesRequired = kResults.GetInt("CultureBranchesRequired");
m_iTechShare = kResults.GetInt("TechShare");
m_iVictoryDelayPercent = kResults.GetInt("VictoryDelayPercent");
m_bSpaceship = kResults.GetBool("Spaceship");
m_bAllowsNukes = kResults.GetBool("AllowsNukes");
m_strMovieArtDef = kResults.GetText("MovieDefineTag");
const char* szVictoryPrereq = kResults.GetText("VictoryPrereq");
m_iVictoryPrereq = GC.getInfoTypeForString(szVictoryPrereq, true);
const char* szTechPrereq = kResults.GetText("TechPrereq");
m_iTechPrereq = GC.getInfoTypeForString(szTechPrereq, true);
const char* szEveryoneSpecialUnit = kResults.GetText("EveryoneSpecialUnit");
m_iEveryoneSpecialUnit = GC.getInfoTypeForString(szEveryoneSpecialUnit, true);
const char* szCreateSound = kResults.GetText("CreateSound");
SetCreateSound(szCreateSound);
const char* szAnyonePrereqProject = kResults.GetText("AnyonePrereqProject");
m_iAnyoneProjectPrereq = GC.getInfoTypeForString(szAnyonePrereqProject, true);
//Arrays
const char* szProjectType = GetType();
kUtility.PopulateArrayByValue(m_piResourceQuantityRequirements, "Resources", "Project_ResourceQuantityRequirements", "ResourceType", "ProjectType", szProjectType, "Quantity");
//Victory Thresholds
{
const int iNumVictories = kUtility.MaxRows("Victories");
kUtility.InitializeArray(m_piVictoryThreshold, iNumVictories);
kUtility.InitializeArray(m_piVictoryMinThreshold, iNumVictories);
Database::Results kDBResults;
char szQuery[512] = {0};
sprintf_s(szQuery, "select VictoryType, Threshold, MinThreshold from Project_VictoryThresholds where ProjectType = '%s';", szProjectType);
if(DB.Execute(kDBResults, szQuery))
{
while(kDBResults.Step())
{
const char* szVictoryType = kDBResults.GetText("VictoryType");
const int idx = GC.getInfoTypeForString(szVictoryType, true);
const int iThreshold = kDBResults.GetInt("Threshold");
const int iMinThreshold = kDBResults.GetInt("MinThreshold");
m_piVictoryThreshold[idx] = iThreshold;
m_piVictoryMinThreshold[idx] = iMinThreshold;
}
}
}
kUtility.SetFlavors(m_piFlavorValue, "Project_Flavors", "ProjectType", szProjectType);
kUtility.PopulateArrayByValue(m_piProjectsNeeded, "Projects", "Project_Prereqs", "PrereqProjectType", "ProjectType", szProjectType, "AmountNeeded");
// EventEngine - v0.1, Snarko
{
m_asziFlagPrereqs.clear();
std::string strKey("Project_PrereqFlags");
Database::Results* pResults = kUtility.GetResults(strKey);
if(pResults == NULL)
{
pResults = kUtility.PrepareResults(strKey, "select * from Project_PrereqFlags where ProjectType = ?");
}
pResults->Bind(1, szProjectType);
while(pResults->Step())
{
std::string szFlag = pResults->GetText("Flag");
int iMinimumValue = pResults->GetInt("MinimumValue");
m_asziFlagPrereqs.push_back(std::make_pair(szFlag, iMinimumValue));
}
}
// END EventEngine
return true;
}
示例15: CacheResults
bool CvUnitEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)
{
if(!CvBaseInfo::CacheResults(kResults, kUtility))
return false;
//Basic Properties
m_iProductionCost = kResults.GetInt("Cost");
m_iFaithCost = kResults.GetInt("FaithCost");
m_bRequiresFaithPurchaseEnabled = kResults.GetBool("RequiresFaithPurchaseEnabled");
m_iHurryCostModifier = kResults.GetInt("HurryCostModifier");
m_iAdvancedStartCost = kResults.GetInt("AdvancedStartCost");
m_iMinAreaSize = kResults.GetInt("MinAreaSize");
m_iMoves = kResults.GetInt("Moves");
m_bMoves = kResults.GetInt("Immobile");
m_iBaseSightRange = kResults.GetInt("BaseSightRange");
m_iRange = kResults.GetInt("Range");
m_iAirInterceptRange = kResults.GetInt("AirInterceptRange");
m_iAirUnitCap = kResults.GetInt("AirUnitCap");
m_iNukeDamageLevel = kResults.GetInt("NukeDamageLevel");
m_iWorkRate = kResults.GetInt("WorkRate");
m_iNumFreeTechs = kResults.GetInt("NumFreeTechs");
m_iBaseBeakersTurnsToCount = kResults.GetInt("BaseBeakersTurnsToCount");
m_iBaseHurry = kResults.GetInt("BaseHurry");
m_iHurryMultiplier = kResults.GetInt("HurryMultiplier");
m_bRushBuilding= kResults.GetInt("RushBuilding");
m_iBaseGold = kResults.GetInt("BaseGold");
m_iNumGoldPerEra = kResults.GetInt("NumGoldPerEra");
m_bSpreadReligion = kResults.GetBool("SpreadReligion");
m_bRemoveHeresy = kResults.GetBool("RemoveHeresy");
m_iReligionSpreads = kResults.GetInt("ReligionSpreads");
m_iReligiousStrength = kResults.GetInt("ReligiousStrength");
m_bFoundReligion = kResults.GetBool("FoundReligion");
m_bRequiresEnhancedReligion = kResults.GetBool("RequiresEnhancedReligion");
m_bProhibitsSpread = kResults.GetBool("ProhibitsSpread");
m_iCombat = kResults.GetInt("Combat");
m_iCombatLimit = kResults.GetInt("CombatLimit");
m_iRangedCombat = kResults.GetInt("RangedCombat");
m_iRangedCombatLimit = kResults.GetInt("RangedCombatLimit");
m_iXPValueAttack = kResults.GetInt("XPValueAttack");
m_iXPValueDefense = kResults.GetInt("XPValueDefense");
m_iConscriptionValue = kResults.GetInt("Conscription");
m_iExtraMaintenanceCost = kResults.GetInt("ExtraMaintenanceCost");
m_bNoMaintenance = kResults.GetBool("NoMaintenance");
m_iUnhappiness = kResults.GetInt("Unhappiness");
m_iUnitFlagIconOffset = kResults.GetInt("UnitFlagIconOffset");
m_iUnitPortraitOffset = kResults.GetInt("PortraitIndex");
m_iLeaderExperience = kResults.GetInt("LeaderExperience");
m_bFoodProduction = kResults.GetBool("Food");
m_bNoBadGoodies = kResults.GetBool("NoBadGoodies");
m_bRivalTerritory = kResults.GetBool("RivalTerritory");
m_bMilitarySupport = kResults.GetBool("MilitarySupport");
m_bMilitaryProduction = kResults.GetBool("MilitaryProduction");
m_bPillage = kResults.GetBool("Pillage");
m_bFound = kResults.GetBool("Found");
m_bFoundAbroad = kResults.GetBool("FoundAbroad");
m_iCultureBombRadius = kResults.GetInt("CultureBombRadius");
m_iGoldenAgeTurns = kResults.GetInt("GoldenAgeTurns");
m_bIgnoreBuildingDefense = kResults.GetBool("IgnoreBuildingDefense");
m_bPrereqResources = kResults.GetBool("PrereqResources");
m_bMechanized = kResults.GetBool("Mechanized");
m_bSuicide = kResults.GetBool("Suicide");
m_bCaptureWhileEmbarked = kResults.GetBool("CaptureWhileEmbarked");
m_bRangeAttackOnlyInDomain = kResults.GetBool("RangeAttackOnlyInDomain");
m_strUnitArtInfoTag = kResults.GetText("UnitArtInfo");
m_bUnitArtInfoCulturalVariation = kResults.GetBool("UnitArtInfoCulturalVariation");
m_bUnitArtInfoEraVariation = kResults.GetBool("UnitArtInfoEraVariation");
//References
const char* szTextVal = NULL;
szTextVal = kResults.GetText("Class");
m_iUnitClassType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("Special");
m_iSpecialUnitType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("Capture");
m_iUnitCaptureClassType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("CombatClass");
m_iUnitCombatType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("Domain");
m_iDomainType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("CivilianAttackPriority");
m_iCivilianAttackPriority = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("DefaultUnitAI");
m_iDefaultUnitAIType = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("PillagePrereqTech");
m_iPrereqPillageTech = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("PrereqTech");
m_iPrereqAndTech = GC.getInfoTypeForString(szTextVal, true);
szTextVal = kResults.GetText("ObsoleteTech");
m_iObsoleteTech = GC.getInfoTypeForString(szTextVal, true);
//.........这里部分代码省略.........