Bazaar developer reference

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

Defined in
CvInfos.cpp, line 2251
Class
CvCivilizationInfo
Hook name
CivHooks::CvCivilizationInfo_CacheResults
Overrides
CvCivilizationBaseInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Hooks

static bool BeforeCvCivilizationInfo_CacheResults(CvCivilizationInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvCivilizationInfo_CacheResults(CvCivilizationInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvCivilizationInfo_CacheResults(bool (*original)(CvCivilizationInfo*, Database::Results&, CvDatabaseUtility&), CvCivilizationInfo* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvCivilizationInfo_CacheResults>(host, &BeforeCvCivilizationInfo_CacheResults);CivRegisterAfter<CivHooks::CvCivilizationInfo_CacheResults>(host, &AfterCvCivilizationInfo_CacheResults);CivRegisterReplace<CivHooks::CvCivilizationInfo_CacheResults>(host, &ReplaceCvCivilizationInfo_CacheResults);

Code

2251bool CvCivilizationInfo::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)2252{2253	if(!CvCivilizationBaseInfo::CacheResults(kResults, kUtility))2254		return false;22552256	const size_t maxUnitClasses = kUtility.MaxRows("UnitClasses");2257	const size_t maxBuildingClasses = kUtility.MaxRows("BuildingClasses");22582259	const char* szTextVal = NULL;	//! temporary val22602261	//Basic Properties2262	szTextVal = kResults.GetText("Adjective");2263	setAdjectiveKey(szTextVal);22642265	//References2266	szTextVal = kResults.GetText("DefaultPlayerColor");2267	m_iDefaultPlayerColor = GC.getInfoTypeForString(szTextVal, true);22682269	szTextVal = kResults.GetText("ArtDefineTag");2270	setArtDefineTag(szTextVal);22712272	szTextVal = kResults.GetText("ArtStyleType");2273	m_iArtStyleType = GC.getInfoTypeForString(szTextVal, true);22742275	szTextVal = kResults.GetText("ArtStylePrefix");2276	setArtStylePrefix(szTextVal);22772278	szTextVal = kResults.GetText("ArtStyleSuffix");2279	setArtStyleSuffix(szTextVal);22802281	szTextVal = kResults.GetText("DawnOfManAudio");2282	m_strDawnOfManAudio = szTextVal;22832284	szTextVal = kResults.GetText("SoundtrackTag");2285	m_strSoundtrackKey = szTextVal;22862287	const char* szType = GetType();22882289	//coastal start2290	{2291		m_bCoastalCiv = false;22922293		std::string strKey = "Civilization_Start_Along_Ocean";2294		Database::Results* pResults = kUtility.GetResults(strKey);2295		if(pResults == NULL)2296		{2297			pResults = kUtility.PrepareResults(strKey, "select StartAlongOcean from Civilization_Start_Along_Ocean where CivilizationType = ?");2298		}22992300		pResults->Bind(1, szType, -1, false);23012302		while(pResults->Step())2303		{2304			m_bCoastalCiv = pResults->GetBool(0);2305		}23062307		pResults->Reset();2308	}23092310	//place first2311	{2312		m_bPlaceFirst = false;23132314		std::string strKey = "Civilization_Start_Place_First";2315		Database::Results* pResults = kUtility.GetResults(strKey);2316		if(pResults == NULL)2317		{2318			pResults = kUtility.PrepareResults(strKey, "select PlaceFirst from Civilization_Start_Place_First_Along_Ocean where CivilizationType = ?");2319		}23202321		pResults->Bind(1, szType, -1, false);23222323		while(pResults->Step())2324		{2325			m_bPlaceFirst = pResults->GetBool(0);2326		}23272328		pResults->Reset();2329	}23302331	//Arrays23322333	//City Names2334	{2335		m_vCityNames.clear();23362337		std::string strKey = "Civilization - CityNames";2338		Database::Results* pResults = kUtility.GetResults(strKey);2339		if(pResults == NULL)2340		{2341			pResults = kUtility.PrepareResults(strKey, "select CityName from Civilization_CityNames where CivilizationType = ?");2342		}23432344		pResults->Bind(1, szType, -1, false);23452346		while(pResults->Step())2347		{2348			m_vCityNames.push_back(pResults->GetText(0));2349		}23502351		pResults->Reset();2352	}23532354	//Building Types2355	{2356		// call the function that sets the default civilization buildings2357		InitBuildingDefaults(m_piCivilizationBuildings, kUtility);23582359		m_CivilizationBuildingOverridden.reserve(maxBuildingClasses);2360		m_CivilizationBuildingOverridden.clear();2361		m_CivilizationBuildingOverridden.resize(maxBuildingClasses, false);23622363		std::string key = "Civilization_BuildingClassOverrides";2364		Database::Results* pResults = kUtility.GetResults(key);2365		if(pResults == NULL)2366		{2367			pResults = kUtility.PrepareResults(key, "select BuildingClasses.ID, coalesce(Buildings.ID, -1) from Civilization_BuildingClassOverrides inner join BuildingClasses on BuildingClassType = BuildingClasses.Type left outer join Buildings on BuildingType = Buildings.Type where CivilizationType = ?");23682369		}23702371		pResults->Bind(1, szType);23722373		while(pResults->Step())2374		{2375			const int idx = pResults->GetInt(0);2376			const int buildingID = pResults->GetInt(1);23772378			m_piCivilizationBuildings[idx] = buildingID;2379			m_CivilizationBuildingOverridden[idx] = true;2380		}23812382		pResults->Reset();2383	}23842385	//Unit Types2386	{2387		// call the function that sets the default civilization units2388		InitUnitDefaults(m_piCivilizationUnits, kUtility);23892390		m_CivilizationUnitOverridden.reserve(maxUnitClasses);2391		m_CivilizationUnitOverridden.clear();2392		m_CivilizationUnitOverridden.resize(maxUnitClasses,false);23932394		std::string key = "Civilization_UnitClassOverrides";2395		Database::Results* pResults = kUtility.GetResults(key);2396		if(pResults == NULL)2397		{2398			pResults = kUtility.PrepareResults(key, "select UnitClasses.ID, coalesce(Units.ID, -1) from Civilization_UnitClassOverrides inner join UnitClasses on UnitClassType = UnitClasses.Type left outer join Units on UnitType = Units.Type where CivilizationType = ?");2399		}24002401		pResults->Bind(1, szType);24022403		while(pResults->Step())2404		{2405			const int idx = pResults->GetInt(0);2406			const int unitID = pResults->GetInt(1);24072408			m_piCivilizationUnits[idx] = unitID;2409			m_CivilizationUnitOverridden[idx] = true;2410		}24112412		pResults->Reset();24132414	}24152416	//FreeUnits2417	{2418		kUtility.InitializeArray(m_piCivilizationFreeUnitsClass, maxUnitClasses, -1);2419		kUtility.InitializeArray(m_piCivilizationFreeUnitsDefaultUnitAI, maxUnitClasses, -1);24202421		std::string strKey = "Civilizations - FreeUnits";2422		Database::Results* pResults = kUtility.GetResults(strKey);2423		if(pResults == NULL)2424		{2425			pResults = kUtility.PrepareResults(strKey, "select UnitClasses.ID as UnitClassID, UnitAIInfos.ID as UnitAITypeID, Count from Civilization_FreeUnits inner join UnitClasses on UnitClassType = UnitClasses.Type inner join UnitAIInfos on UnitAIType = UnitAIInfos.Type where CivilizationType = ?");2426		}24272428		pResults->Bind(1, szType, -1, false);24292430		while(pResults->Step())2431		{2432			const int iUnitClassID = pResults->GetInt(0);2433			const int iUnitAITypeID = pResults->GetInt(1);2434			const int iCount = pResults->GetInt(2);24352436			m_piCivilizationFreeUnitsClass[iUnitClassID] = iCount;2437			m_piCivilizationFreeUnitsDefaultUnitAI[iUnitClassID] = iUnitAITypeID;2438		}24392440		pResults->Reset();24412442	}24432444	kUtility.PopulateArrayByExistence(m_pbCivilizationFreeBuildingClass,2445	                                  "BuildingClasses", "Civilization_FreeBuildingClasses",2446	                                  "BuildingClassType", "CivilizationType", szType);244724482449	kUtility.PopulateArrayByExistence(m_pbCivilizationFreeTechs, "Technologies",2450	                                  "Civilization_FreeTechs", "TechType",2451	                                  "CivilizationType", szType);245224532454	kUtility.PopulateArrayByExistence(m_pbCivilizationDisableTechs, "Technologies",2455	                                  "Civilization_DisableTechs", "TechType",2456	                                  "CivilizationType", szType);245724582459	kUtility.PopulateArrayByExistence(m_pbLeaders, "Leaders", "Civilization_Leaders",2460	                                  "LeaderheadType", "CivilizationType", szType);24612462	kUtility.PopulateArrayByExistence(m_pbReligions, "Religions", "Civilization_Religions",2463	                                  "ReligionType", "CivilizationType", szType);24642465	//Spy Names2466	{2467		m_vSpyNames.clear();24682469		std::string strKey = "Civilization - SpyNames";2470		Database::Results* pResults = kUtility.GetResults(strKey);2471		if(pResults == NULL)2472		{2473			pResults = kUtility.PrepareResults(strKey, "select SpyName from Civilization_SpyNames where CivilizationType = ?");2474		}24752476		pResults->Bind(1, szType, -1, false);24772478		while(pResults->Step())2479		{2480			m_vSpyNames.push_back(pResults->GetText(0));2481		}24822483		pResults->Reset();2484	}24852486	return true;2487}

Calls