Bazaar developer reference

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

Defined in
CvBeliefClasses.cpp, line 742
Class
CvBeliefEntry
Hook name
CivHooks::CvBeliefEntry_CacheResults
Overrides
CvBaseInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Hooks

static bool BeforeCvBeliefEntry_CacheResults(CvBeliefEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvBeliefEntry_CacheResults(CvBeliefEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvBeliefEntry_CacheResults(bool (*original)(CvBeliefEntry*, Database::Results&, CvDatabaseUtility&), CvBeliefEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvBeliefEntry_CacheResults>(host, &BeforeCvBeliefEntry_CacheResults);CivRegisterAfter<CivHooks::CvBeliefEntry_CacheResults>(host, &AfterCvBeliefEntry_CacheResults);CivRegisterReplace<CivHooks::CvBeliefEntry_CacheResults>(host, &ReplaceCvBeliefEntry_CacheResults);

Code

741/// Load XML data742bool CvBeliefEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)743{744	if(!CvBaseInfo::CacheResults(kResults, kUtility))745		return false;746747	//Basic Properties748	setShortDescription(kResults.GetText("ShortDescription"));749750	m_iMinPopulation                  = kResults.GetInt("MinPopulation");751	m_iMinFollowers                   = kResults.GetInt("MinFollowers");752	m_iMaxDistance					  = kResults.GetInt("MaxDistance");753	m_iCityGrowthModifier		      = kResults.GetInt("CityGrowthModifier");754	m_iFaithFromKills				  = kResults.GetInt("FaithFromKills");755	m_iFaithFromDyingUnits			  = kResults.GetInt("FaithFromDyingUnits");756	m_iRiverHappiness				  = kResults.GetInt("RiverHappiness");757	m_iHappinessPerCity				  = kResults.GetInt("HappinessPerCity");758	m_iHappinessPerXPeacefulForeignFollowers  = kResults.GetInt("HappinessPerXPeacefulForeignFollowers");759	m_iPlotCultureCostModifier	      = kResults.GetInt("PlotCultureCostModifier");760	m_iCityRangeStrikeModifier	      = kResults.GetInt("CityRangeStrikeModifier");761	m_iCombatModifierEnemyCities      = kResults.GetInt("CombatModifierEnemyCities");762	m_iCombatModifierFriendlyCities   = kResults.GetInt("CombatModifierFriendlyCities");763	m_iFriendlyHealChange	          = kResults.GetInt("FriendlyHealChange");764	m_iCityStateFriendshipModifier    = kResults.GetInt("CityStateFriendshipModifier");765	m_iLandBarbarianConversionPercent = kResults.GetInt("LandBarbarianConversionPercent");766	m_iWonderProductionModifier       = kResults.GetInt("WonderProductionModifier");767	m_iPlayerHappiness			      = kResults.GetInt("PlayerHappiness");768	m_iPlayerCultureModifier          = kResults.GetInt("PlayerCultureModifier");769	m_fHappinessPerFollowingCity      = kResults.GetFloat("HappinessPerFollowingCity");770	m_iGoldPerFollowingCity           = kResults.GetInt("GoldPerFollowingCity");771	m_iGoldPerXFollowers              = kResults.GetInt("GoldPerXFollowers");772	m_iGoldWhenCityAdopts             = kResults.GetInt("GoldPerFirstCityConversion");773	m_iSciencePerOtherReligionFollower= kResults.GetInt("SciencePerOtherReligionFollower");774	m_iSpreadDistanceModifier         = kResults.GetInt("SpreadDistanceModifier");775	m_iSpreadStrengthModifier		  = kResults.GetInt("SpreadStrengthModifier");776	m_iProphetStrengthModifier        = kResults.GetInt("ProphetStrengthModifier");777	m_iProphetCostModifier            = kResults.GetInt("ProphetCostModifier");778	m_iMissionaryStrengthModifier     = kResults.GetInt("MissionaryStrengthModifier");779	m_iMissionaryCostModifier         = kResults.GetInt("MissionaryCostModifier");780	m_iFriendlyCityStateSpreadModifier= kResults.GetInt("FriendlyCityStateSpreadModifier");781	m_iGreatPersonExpendedFaith       = kResults.GetInt("GreatPersonExpendedFaith");782	m_iCityStateMinimumInfluence      = kResults.GetInt("CityStateMinimumInfluence");783	m_iCityStateInfluenceModifier     = kResults.GetInt("CityStateInfluenceModifier");784	m_iOtherReligionPressureErosion   = kResults.GetInt("OtherReligionPressureErosion");785	m_iSpyPressure					  = kResults.GetInt("SpyPressure");786	m_iInquisitorPressureRetention    = kResults.GetInt("InquisitorPressureRetention");787	m_iFaithBuildingTourism           = kResults.GetInt("FaithBuildingTourism");788789	m_bPantheon						  = kResults.GetBool("Pantheon");790	m_bFounder						  = kResults.GetBool("Founder");791	m_bFollower						  = kResults.GetBool("Follower");792	m_bEnhancer						  = kResults.GetBool("Enhancer");793	m_bReformer						  = kResults.GetBool("Reformation");794	m_bRequiresPeace				  = kResults.GetBool("RequiresPeace");795	m_bConvertsBarbarians			  = kResults.GetBool("ConvertsBarbarians");796	m_bFaithPurchaseAllGreatPeople	  = kResults.GetBool("FaithPurchaseAllGreatPeople");797798	//References799	const char* szTextVal;800	szTextVal						  = kResults.GetText("ObsoleteEra");801	m_eObsoleteEra					  = (EraTypes)GC.getInfoTypeForString(szTextVal, true);802	szTextVal						  = kResults.GetText("ResourceRevealed");803	m_eResourceRevealed				  = (ResourceTypes)GC.getInfoTypeForString(szTextVal, true);804	szTextVal						  = kResults.GetText("SpreadModifierDoublingTech");805	m_eSpreadModifierDoublingTech     = (TechTypes)GC.getInfoTypeForString(szTextVal, true);806807	//Arrays808	const char* szBeliefType = GetType();809	kUtility.SetYields(m_paiCityYieldChange, "Belief_CityYieldChanges", "BeliefType", szBeliefType);810	kUtility.SetYields(m_paiHolyCityYieldChange, "Belief_HolyCityYieldChanges", "BeliefType", szBeliefType);811	kUtility.SetYields(m_piYieldChangeAnySpecialist, "Belief_YieldChangeAnySpecialist", "BeliefType", szBeliefType);812	kUtility.SetYields(m_piYieldChangeTradeRoute, "Belief_YieldChangeTradeRoute", "BeliefType", szBeliefType);813	kUtility.SetYields(m_piYieldChangeNaturalWonder, "Belief_YieldChangeNaturalWonder", "BeliefType", szBeliefType);814	kUtility.SetYields(m_piYieldChangeWorldWonder, "Belief_YieldChangeWorldWonder", "BeliefType", szBeliefType);815	kUtility.SetYields(m_piYieldModifierNaturalWonder, "Belief_YieldModifierNaturalWonder", "BeliefType", szBeliefType);816	kUtility.PopulateArrayByValue(m_piMaxYieldModifierPerFollower, "Yields", "Belief_MaxYieldModifierPerFollower", "YieldType", "BeliefType", szBeliefType, "Max");817	kUtility.PopulateArrayByValue(m_piResourceHappiness, "Resources", "Belief_ResourceHappiness", "ResourceType", "BeliefType", szBeliefType, "HappinessChange");818	kUtility.PopulateArrayByValue(m_piResourceQuantityModifiers, "Resources", "Belief_ResourceQuantityModifiers", "ResourceType", "BeliefType", szBeliefType, "ResourceQuantityModifier");819	kUtility.PopulateArrayByValue(m_paiBuildingClassHappiness, "BuildingClasses", "Belief_BuildingClassHappiness", "BuildingClassType", "BeliefType", szBeliefType, "Happiness");820	kUtility.PopulateArrayByValue(m_paiBuildingClassTourism, "BuildingClasses", "Belief_BuildingClassTourism", "BuildingClassType", "BeliefType", szBeliefType, "Tourism");821	kUtility.PopulateArrayByValue(m_paiYieldChangePerForeignCity, "Yields", "Belief_YieldChangePerForeignCity", "YieldType", "BeliefType", szBeliefType, "Yield");822	kUtility.PopulateArrayByValue(m_paiYieldChangePerXForeignFollowers, "Yields", "Belief_YieldChangePerXForeignFollowers", "YieldType", "BeliefType", szBeliefType, "ForeignFollowers");823#if defined(MOD_API_UNIFIED_YIELDS)824	kUtility.PopulateArrayByValue(m_piYieldPerFollowingCity, "Yields", "Belief_YieldPerFollowingCity", "YieldType", "BeliefType", szBeliefType, "Yield");825	kUtility.PopulateArrayByValue(m_piYieldPerXFollowers, "Yields", "Belief_YieldPerXFollowers", "YieldType", "BeliefType", szBeliefType, "PerXFollowers");826	kUtility.PopulateArrayByValue(m_piYieldPerOtherReligionFollower, "Yields", "Belief_YieldPerOtherReligionFollower", "YieldType", "BeliefType", szBeliefType, "Yield");827#endif828	kUtility.PopulateArrayByExistence(m_pbFaithPurchaseUnitEraEnabled, "Eras", "Belief_EraFaithUnitPurchase", "EraType", "BeliefType", szBeliefType);829	kUtility.PopulateArrayByExistence(m_pbBuildingClassEnabled, "BuildingClasses", "Belief_BuildingClassFaithPurchase", "BuildingClassType", "BeliefType", szBeliefType);830831	//ImprovementYieldChanges832	{833		kUtility.Initialize2DArray(m_ppiImprovementYieldChanges, "Improvements", "Yields");834835		std::string strKey("Belief_ImprovementYieldChanges");836		Database::Results* pResults = kUtility.GetResults(strKey);837		if(pResults == NULL)838		{839			pResults = kUtility.PrepareResults(strKey, "select Improvements.ID as ImprovementID, Yields.ID as YieldID, Yield from Belief_ImprovementYieldChanges inner join Improvements on Improvements.Type = ImprovementType inner join Yields on Yields.Type = YieldType where BeliefType = ?");840		}841842		pResults->Bind(1, szBeliefType);843844		while(pResults->Step())845		{846			const int ImprovementID = pResults->GetInt(0);847			const int YieldID = pResults->GetInt(1);848			const int yield = pResults->GetInt(2);849850			m_ppiImprovementYieldChanges[ImprovementID][YieldID] = yield;851		}852	}853854	//BuildingClassYieldChanges855	{856		kUtility.Initialize2DArray(m_ppiBuildingClassYieldChanges, "BuildingClasses", "Yields");857858		std::string strKey("Belief_BuildingClassYieldChanges");859		Database::Results* pResults = kUtility.GetResults(strKey);860		if(pResults == NULL)861		{862			pResults = kUtility.PrepareResults(strKey, "select BuildingClasses.ID as BuildingClassID, Yields.ID as YieldID, YieldChange from Belief_BuildingClassYieldChanges inner join BuildingClasses on BuildingClasses.Type = BuildingClassType inner join Yields on Yields.Type = YieldType where BeliefType = ?");863		}864865		pResults->Bind(1, szBeliefType);866867		while(pResults->Step())868		{869			const int BuildingClassID = pResults->GetInt(0);870			const int iYieldID = pResults->GetInt(1);871			const int iYieldChange = pResults->GetInt(2);872873			m_ppiBuildingClassYieldChanges[BuildingClassID][iYieldID] = iYieldChange;874		}875	}876877	//FeatureYieldChanges878	{879		kUtility.Initialize2DArray(m_ppaiFeatureYieldChange, "Features", "Yields");880881		std::string strKey("Belief_FeatureYieldChanges");882		Database::Results* pResults = kUtility.GetResults(strKey);883		if(pResults == NULL)884		{885			pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_FeatureYieldChanges inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");886		}887888		pResults->Bind(1, szBeliefType);889890		while(pResults->Step())891		{892			const int FeatureID = pResults->GetInt(0);893			const int YieldID = pResults->GetInt(1);894			const int yield = pResults->GetInt(2);895896			m_ppaiFeatureYieldChange[FeatureID][YieldID] = yield;897		}898	}899900#if defined(MOD_API_UNIFIED_YIELDS)901	//CityYieldFromUnimprovedFeature902	if (MOD_API_UNIFIED_YIELDS) {903		kUtility.Initialize2DArray(m_ppiCityYieldFromUnimprovedFeature, "Features", "Yields");904905		std::string strKey("Belief_CityYieldFromUnimprovedFeature");906		Database::Results* pResults = kUtility.GetResults(strKey);907		if(pResults == NULL)908		{909			pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_CityYieldFromUnimprovedFeature inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");910		}911912		pResults->Bind(1, szBeliefType);913914		while(pResults->Step())915		{916			const int FeatureID = pResults->GetInt(0);917			const int YieldID = pResults->GetInt(1);918			const int yield = pResults->GetInt(2);919920			m_ppiCityYieldFromUnimprovedFeature[FeatureID][YieldID] = yield;921		}922	}923924	//UnimprovedFeatureYieldChanges925	if (MOD_API_UNIFIED_YIELDS) {926		kUtility.Initialize2DArray(m_ppiUnimprovedFeatureYieldChanges, "Features", "Yields");927928		std::string strKey("Belief_UnimprovedFeatureYieldChanges");929		Database::Results* pResults = kUtility.GetResults(strKey);930		if(pResults == NULL)931		{932			pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_UnimprovedFeatureYieldChanges inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");933		}934935		pResults->Bind(1, szBeliefType);936937		while(pResults->Step())938		{939			const int FeatureID = pResults->GetInt(0);940			const int YieldID = pResults->GetInt(1);941			const int yield = pResults->GetInt(2);942943			m_ppiUnimprovedFeatureYieldChanges[FeatureID][YieldID] = yield;944		}945	}946#endif947948	//ResourceYieldChanges949	{950		kUtility.Initialize2DArray(m_ppaiResourceYieldChange, "Resources", "Yields");951952		std::string strKey("Belief_ResourceYieldChanges");953		Database::Results* pResults = kUtility.GetResults(strKey);954		if(pResults == NULL)955		{956			pResults = kUtility.PrepareResults(strKey, "select Resources.ID as ResourceID, Yields.ID as YieldID, Yield from Belief_ResourceYieldChanges inner join Resources on Resources.Type = ResourceType inner join Yields on Yields.Type = YieldType where BeliefType = ?");957		}958959		pResults->Bind(1, szBeliefType);960961		while(pResults->Step())962		{963			const int ResourceID = pResults->GetInt(0);964			const int YieldID = pResults->GetInt(1);965			const int yield = pResults->GetInt(2);966967			m_ppaiResourceYieldChange[ResourceID][YieldID] = yield;968		}969	}970971	//TerrainYieldChanges972	{973		kUtility.Initialize2DArray(m_ppaiTerrainYieldChange, "Terrains", "Yields");974975		std::string strKey("Belief_TerrainYieldChanges");976		Database::Results* pResults = kUtility.GetResults(strKey);977		if(pResults == NULL)978		{979			pResults = kUtility.PrepareResults(strKey, "select Terrains.ID as TerrainID, Yields.ID as YieldID, Yield from Belief_TerrainYieldChanges inner join Terrains on Terrains.Type = TerrainType inner join Yields on Yields.Type = YieldType where BeliefType = ?");980		}981982		pResults->Bind(1, szBeliefType);983984		while(pResults->Step())985		{986			const int TerrainID = pResults->GetInt(0);987			const int YieldID = pResults->GetInt(1);988			const int yield = pResults->GetInt(2);989990			m_ppaiTerrainYieldChange[TerrainID][YieldID] = yield;991		}992	}993	994#if defined(MOD_API_UNIFIED_YIELDS)995	//TradeRouteYieldChange996	if (MOD_API_UNIFIED_YIELDS) {997		kUtility.Initialize2DArray(m_ppiTradeRouteYieldChange, "Domains", "Yields");998999		std::string strKey("Belief_TradeRouteYieldChange");1000		Database::Results* pResults = kUtility.GetResults(strKey);1001		if(pResults == NULL)1002		{1003			pResults = kUtility.PrepareResults(strKey, "select Domains.ID as DomainID, Yields.ID as YieldID, Yield from Belief_TradeRouteYieldChange inner join Domains on Domains.Type = DomainType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1004		}10051006		pResults->Bind(1, szBeliefType);10071008		while(pResults->Step())1009		{1010			const int DomainID = pResults->GetInt(0);1011			const int YieldID = pResults->GetInt(1);1012			const int yield = pResults->GetInt(2);10131014			m_ppiTradeRouteYieldChange[DomainID][YieldID] = yield;1015		}1016	}1017	1018	//SpecialistYieldChanges1019	if (MOD_API_UNIFIED_YIELDS) {1020		kUtility.Initialize2DArray(m_ppiSpecialistYieldChange, "Specialists", "Yields");10211022		std::string strKey("Belief_SpecialistYieldChanges");1023		Database::Results* pResults = kUtility.GetResults(strKey);1024		if(pResults == NULL)1025		{1026			pResults = kUtility.PrepareResults(strKey, "select Specialists.ID as SpecialistID, Yields.ID as YieldID, Yield from Belief_SpecialistYieldChanges inner join Specialists on Specialists.Type = SpecialistType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1027		}10281029		pResults->Bind(1, szBeliefType);10301031		while(pResults->Step())1032		{1033			const int SpecialistID = pResults->GetInt(0);1034			const int YieldID = pResults->GetInt(1);1035			const int yield = pResults->GetInt(2);10361037			m_ppiSpecialistYieldChange[SpecialistID][YieldID] = yield;1038		}1039	}1040	1041	//GreatPersonExpendedYield1042	if (MOD_API_UNIFIED_YIELDS) {1043		kUtility.Initialize2DArray(m_ppiGreatPersonExpendedYield, "GreatPersons", "Yields");10441045		std::string strKey("Belief_GreatPersonExpendedYield");1046		Database::Results* pResults = kUtility.GetResults(strKey);1047		if(pResults == NULL)1048		{1049			pResults = kUtility.PrepareResults(strKey, "select GreatPersons.ID as GreatPersonID, Yields.ID as YieldID, Yield from Belief_GreatPersonExpendedYield inner join GreatPersons on GreatPersons.Type = GreatPersonType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1050		}10511052		pResults->Bind(1, szBeliefType);10531054		while(pResults->Step())1055		{1056			const int GreatPersonID = pResults->GetInt(0);1057			const int YieldID = pResults->GetInt(1);1058			const int yield = pResults->GetInt(2);10591060			m_ppiGreatPersonExpendedYield[GreatPersonID][YieldID] = yield;1061		}1062	}1063	1064	kUtility.PopulateArrayByValue(m_piGoldenAgeGreatPersonRateModifier, "GreatPersons", "Belief_GoldenAgeGreatPersonRateModifier", "GreatPersonType", "BeliefType", szBeliefType, "Modifier");1065	kUtility.SetYields(m_piCapitalYieldChange, "Belief_CapitalYieldChanges", "BeliefType", szBeliefType);1066	kUtility.SetYields(m_piCoastalCityYieldChange, "Belief_CoastalCityYieldChanges", "BeliefType", szBeliefType);1067	kUtility.SetYields(m_piGreatWorkYieldChange, "Belief_GreatWorkYieldChanges", "BeliefType", szBeliefType);1068	kUtility.SetYields(m_piYieldFromKills, "Belief_YieldFromKills", "BeliefType", szBeliefType);1069	kUtility.SetYields(m_piYieldFromBarbarianKills, "Belief_YieldFromBarbarianKills", "BeliefType", szBeliefType);1070#endif10711072#if defined(MOD_RELIGION_PLOT_YIELDS)1073	if (MOD_RELIGION_PLOT_YIELDS)1074	//PlotYieldChanges1075	{1076		kUtility.Initialize2DArray(m_ppiPlotYieldChange, "Plots", "Yields");10771078		std::string strKey("Belief_PlotYieldChanges");1079		Database::Results* pResults = kUtility.GetResults(strKey);1080		if(pResults == NULL)1081		{1082			pResults = kUtility.PrepareResults(strKey, "select Plots.ID as PlotID, Yields.ID as YieldID, Yield from Belief_PlotYieldChanges inner join Plots on Plots.Type = PlotType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1083		}10841085		pResults->Bind(1, szBeliefType);10861087		while(pResults->Step())1088		{1089			const int PlotID = pResults->GetInt(0);1090			const int YieldID = pResults->GetInt(1);1091			const int yield = pResults->GetInt(2);10921093			m_ppiPlotYieldChange[PlotID][YieldID] = yield;1094		}1095	}1096#endif10971098	return true;1099}

Calls