Bazaar developer reference

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

Defined in
CvInfos.cpp, line 5589
Class
CvTerrainInfo
Hook name
CivHooks::CvTerrainInfo_CacheResults
Overrides
CvBaseInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Hooks

static bool BeforeCvTerrainInfo_CacheResults(CvTerrainInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvTerrainInfo_CacheResults(CvTerrainInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvTerrainInfo_CacheResults(bool (*original)(CvTerrainInfo*, Database::Results&, CvDatabaseUtility&), CvTerrainInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvTerrainInfo_CacheResults>(host, &BeforeCvTerrainInfo_CacheResults);CivRegisterAfter<CivHooks::CvTerrainInfo_CacheResults>(host, &AfterCvTerrainInfo_CacheResults);CivRegisterReplace<CivHooks::CvTerrainInfo_CacheResults>(host, &ReplaceCvTerrainInfo_CacheResults);

Code

5589bool CvTerrainInfo::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)5590{5591	if(!CvBaseInfo::CacheResults(kResults, kUtility))5592		return false;55935594	setArtDefineTag(kResults.GetText("ArtDefineTag"));55955596	m_bWater = kResults.GetBool("Water");5597	m_bImpassable = kResults.GetBool("Impassable");5598	m_bFound = kResults.GetBool("Found");5599	m_bFoundCoast = kResults.GetBool("FoundCoast");5600	m_bFoundFreshWater = kResults.GetBool("FoundFreshWater");56015602	m_iMovementCost = kResults.GetInt("Movement");5603	m_iSeeFromLevel = kResults.GetInt("SeeFrom");5604	m_iSeeThroughLevel = kResults.GetInt("SeeThrough");5605	m_iBuildModifier = kResults.GetInt("BuildModifier");5606	m_iDefenseModifier = kResults.GetInt("Defense");5607	m_iInfluenceCost = kResults.GetInt("InfluenceCost");5608#if defined(MOD_API_PLOT_BASED_DAMAGE)5609	m_iTurnDamage = MOD_API_PLOT_BASED_DAMAGE ? kResults.GetInt("TurnDamage") : 0;5610	m_iExtraTurnDamage = MOD_API_PLOT_BASED_DAMAGE ? kResults.GetInt("ExtraTurnDamage") : 0;5611#endif56125613	const char* szTextVal = kResults.GetText("WorldSoundscapeAudioScript");5614	if(szTextVal != NULL)5615	{5616		m_iWorldSoundscapeScriptId = gDLL->GetAudioTagIndex(szTextVal, AUDIOTAG_SOUNDSCAPE);5617	}5618	else5619	{5620		m_iWorldSoundscapeScriptId = -1;5621		Remark(1, "Warning: Missing soundscape definition in XML for feature: '%s'", GetType());5622	}56235624	//Arrays5625	const char* szTerrainType = GetType();5626	kUtility.SetYields(m_piYields, "Terrain_Yields", "TerrainType", szTerrainType);5627	kUtility.SetYields(m_piRiverYieldChange, "Terrain_RiverYieldChanges", "TerrainType", szTerrainType);5628	kUtility.SetYields(m_piHillsYieldChange, "Terrain_HillsYieldChanges", "TerrainType", szTerrainType);5629#if defined(MOD_API_UNIFIED_YIELDS)5630	kUtility.SetYields(m_piCoastalLandYieldChange, "Terrain_CoastalLandYields", "TerrainType", szTerrainType);5631	kUtility.SetYields(m_piFreshWaterChange, "Terrain_FreshWaterYields", "TerrainType", szTerrainType);56325633	const int iNumYields = kUtility.MaxRows("Yields");5634	const int iNumTechs = GC.getNumTechInfos();5635	CvAssertMsg(iNumTechs > 0, "Num Tech Infos <= 0");56365637	//TechYieldChanges5638	if (MOD_API_UNIFIED_YIELDS) {5639		kUtility.Initialize2DArray(m_ppiTechYieldChanges, iNumTechs, iNumYields);56405641		std::string strKey = "Terrains - TechYieldChanges";5642		Database::Results* pResults = kUtility.GetResults(strKey);5643		if(pResults == NULL)5644		{5645			pResults = kUtility.PrepareResults(strKey, "select Yields.ID as YieldID, Technologies.ID as TechID, Yield from Terrain_TechYieldChanges inner join Yields on YieldType = Yields.Type inner join Technologies on TechType = Technologies.Type where TerrainType = ?");5646		}56475648		pResults->Bind(1, szTerrainType, strlen(szTerrainType), false);56495650		while(pResults->Step())5651		{5652			const int yield_idx = pResults->GetInt(0);5653			CvAssert(yield_idx > -1);56545655			const int tech_idx = pResults->GetInt(1);5656			CvAssert(tech_idx > -1);56575658			const int yield = pResults->GetInt(2);56595660			m_ppiTechYieldChanges[tech_idx][yield_idx] = yield;5661		}5662	}5663#endif56645665	m_strEffectTypeTag = kResults.GetText("EffectTypeTag");56665667	return true;5668}

Calls