Bazaar developer reference

CvFeatureInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Defined in
CvInfos.cpp, line 5172
Class
CvFeatureInfo
Hook name
CivHooks::CvFeatureInfo_CacheResults
Overrides
CvBaseInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Hooks

static bool BeforeCvFeatureInfo_CacheResults(CvFeatureInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvFeatureInfo_CacheResults(CvFeatureInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvFeatureInfo_CacheResults(bool (*original)(CvFeatureInfo*, Database::Results&, CvDatabaseUtility&), CvFeatureInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvFeatureInfo_CacheResults>(host, &BeforeCvFeatureInfo_CacheResults);CivRegisterAfter<CivHooks::CvFeatureInfo_CacheResults>(host, &AfterCvFeatureInfo_CacheResults);CivRegisterReplace<CivHooks::CvFeatureInfo_CacheResults>(host, &ReplaceCvFeatureInfo_CacheResults);

Code

5172bool CvFeatureInfo::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)5173{5174	if(!CvBaseInfo::CacheResults(kResults, kUtility))5175		return false;51765177	const char* szArtDefineTag = kResults.GetText("ArtDefineTag");5178	setArtDefineTag(szArtDefineTag);51795180	// Basic properties5181	m_iStartingLocationWeight = kResults.GetInt("StartingLocationWeight");5182	m_iMovementCost = kResults.GetInt("Movement");5183	m_iSeeThroughChange = kResults.GetInt("SeeThrough");5184	m_iDefenseModifier = kResults.GetInt("Defense");5185	m_iInfluenceCost = kResults.GetInt("InfluenceCost");5186	m_iAdvancedStartRemoveCost = kResults.GetInt("AdvancedStartRemoveCost");5187	m_iTurnDamage = kResults.GetInt("TurnDamage");5188#if defined(MOD_API_PLOT_BASED_DAMAGE)5189	m_iExtraTurnDamage = MOD_API_PLOT_BASED_DAMAGE ? kResults.GetInt("ExtraTurnDamage") : 0;5190#endif5191	m_iAppearanceProbability = kResults.GetInt("AppearanceProbability");5192	m_iDisappearanceProbability = kResults.GetInt("DisappearanceProbability");5193	m_iGrowthProbability = kResults.GetInt("Growth");5194	m_iFirstFinderGold = kResults.GetInt("FirstFinderGold");5195	m_iInBorderHappiness = kResults.GetInt("InBorderHappiness");5196	m_iOccurrenceFrequency = kResults.GetInt("OccurrenceFrequency");51975198	const char* szTextVal;5199	szTextVal = kResults.GetText("AdjacentUnitFreePromotion");5200	m_iAdjacentUnitFreePromotion = GC.getInfoTypeForString(szTextVal, true);52015202	const char* szTerrainType = kResults.GetText("GrowthTerrainType");5203	if(szTerrainType != NULL)5204	{5205		m_iGrowthTerrainType = GC.getInfoTypeForString(szTerrainType, true);5206	}52075208	m_iEffectProbability = kResults.GetInt("EffectProbability");5209	m_bYieldNotAdditive = kResults.GetBool("YieldNotAdditive");5210	m_bNoCoast = kResults.GetBool("NoCoast");5211	m_bNoRiver = kResults.GetBool("NoRiver");5212	m_bNoAdjacent = kResults.GetBool("NoAdjacent");5213	m_bRequiresFlatlands = kResults.GetBool("RequiresFlatlands");5214	m_bRequiresRiver = kResults.GetBool("RequiresRiver");5215	m_bAddsFreshWater = kResults.GetBool("AddsFreshWater");5216	m_bImpassable = kResults.GetBool("Impassable");5217	m_bNoCity = kResults.GetBool("NoCity");5218	m_bNoImprovement = kResults.GetBool("NoImprovement");5219	m_bVisibleAlways = kResults.GetBool("VisibleAlways");5220	m_bNukeImmune = kResults.GetBool("NukeImmune");5221	m_bRough = kResults.GetBool("Rough");5222	m_bNaturalWonder = kResults.GetBool("NaturalWonder");52235224	m_strEffectType = kResults.GetText("EffectType");5225	m_strEffectTypeTag = kResults.GetText("EffectTypeTag");52265227	const char* szWorldsoundscapeAudioScript = kResults.GetText("WorldSoundscapeAudioScript");5228	if(szWorldsoundscapeAudioScript != NULL)5229	{5230		m_iWorldSoundscapeScriptId = gDLL->GetAudioTagIndex(szWorldsoundscapeAudioScript, AUDIOTAG_SOUNDSCAPE);5231	}5232	else5233	{5234		m_iWorldSoundscapeScriptId = -1;5235		Remark(1, "Warning: Missing soundscape definition in XML for feature: '%s'", GetType());5236	}52375238	// Array properties5239	const char* szFeatureType = GetType();5240	kUtility.SetYields(m_piYieldChange, "Feature_YieldChanges", "FeatureType", szFeatureType);5241	kUtility.SetYields(m_piRiverYieldChange, "Feature_RiverYieldChanges", "FeatureType", szFeatureType);5242	kUtility.SetYields(m_piHillsYieldChange, "Feature_HillsYieldChanges", "FeatureType", szFeatureType);5243#if defined(MOD_API_UNIFIED_YIELDS)5244	kUtility.SetYields(m_piCoastalLandYieldChange, "Feature_CoastalLandYields", "FeatureType", szFeatureType);5245	kUtility.SetYields(m_piFreshWaterChange, "Feature_FreshWaterYields", "FeatureType", szFeatureType);52465247	const int iNumYields = kUtility.MaxRows("Yields");5248	const int iNumTechs = GC.getNumTechInfos();5249	CvAssertMsg(iNumTechs > 0, "Num Tech Infos <= 0");52505251	//TechYieldChanges5252	if (MOD_API_UNIFIED_YIELDS) {5253		kUtility.Initialize2DArray(m_ppiTechYieldChanges, iNumTechs, iNumYields);52545255		std::string strKey = "Features - TechYieldChanges";5256		Database::Results* pResults = kUtility.GetResults(strKey);5257		if(pResults == NULL)5258		{5259			pResults = kUtility.PrepareResults(strKey, "select Yields.ID as YieldID, Technologies.ID as TechID, Yield from Feature_TechYieldChanges inner join Yields on YieldType = Yields.Type inner join Technologies on TechType = Technologies.Type where FeatureType = ?");5260		}52615262		pResults->Bind(1, szFeatureType, strlen(szFeatureType), false);52635264		while(pResults->Step())5265		{5266			const int yield_idx = pResults->GetInt(0);5267			CvAssert(yield_idx > -1);52685269			const int tech_idx = pResults->GetInt(1);5270			CvAssert(tech_idx > -1);52715272			const int yield = pResults->GetInt(2);52735274			m_ppiTechYieldChanges[tech_idx][yield_idx] = yield;5275		}5276	}5277#endif52785279	kUtility.PopulateArrayByExistence(m_pbTerrain, "Terrains", "Feature_TerrainBooleans", "TerrainType", "FeatureType", szFeatureType);52805281	// Determine of this feature is clearable - set each time the game is started5282	m_bClearable = false;52835284	return true;5285}

Calls