Bazaar developer reference

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

Defined in
CvProjectClasses.cpp, line 33
Class
CvProjectEntry
Hook name
CivHooks::CvProjectEntry_CacheResults
Overrides
CvBaseInfo::CacheResults(Database::Results &, CvDatabaseUtility &)

Hooks

static bool BeforeCvProjectEntry_CacheResults(CvProjectEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static void AfterCvProjectEntry_CacheResults(CvProjectEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility, bool& result);static bool ReplaceCvProjectEntry_CacheResults(bool (*original)(CvProjectEntry*, Database::Results&, CvDatabaseUtility&), CvProjectEntry* self, Database::Results& kResults, CvDatabaseUtility& kUtility);CivRegisterBefore<CivHooks::CvProjectEntry_CacheResults>(host, &BeforeCvProjectEntry_CacheResults);CivRegisterAfter<CivHooks::CvProjectEntry_CacheResults>(host, &AfterCvProjectEntry_CacheResults);CivRegisterReplace<CivHooks::CvProjectEntry_CacheResults>(host, &ReplaceCvProjectEntry_CacheResults);

Code

33bool CvProjectEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)34{35	if(!CvBaseInfo::CacheResults(kResults, kUtility))36		return false;3738	m_iMaxGlobalInstances = kResults.GetInt("MaxGlobalInstances");39	m_iMaxTeamInstances = kResults.GetInt("MaxTeamInstances");40	m_iProductionCost = kResults.GetInt("Cost");41	m_iNukeInterception = kResults.GetInt("NukeInterception");42	m_iCultureBranchesRequired = kResults.GetInt("CultureBranchesRequired");43	m_iTechShare = kResults.GetInt("TechShare");44	m_iVictoryDelayPercent = kResults.GetInt("VictoryDelayPercent");4546	m_bSpaceship = kResults.GetBool("Spaceship");47	m_bAllowsNukes = kResults.GetBool("AllowsNukes");4849	m_strMovieArtDef = kResults.GetText("MovieDefineTag");5051	const char* szVictoryPrereq = kResults.GetText("VictoryPrereq");52	m_iVictoryPrereq = GC.getInfoTypeForString(szVictoryPrereq, true);5354	const char* szTechPrereq = kResults.GetText("TechPrereq");55	m_iTechPrereq = GC.getInfoTypeForString(szTechPrereq, true);5657	const char* szEveryoneSpecialUnit = kResults.GetText("EveryoneSpecialUnit");58	m_iEveryoneSpecialUnit = GC.getInfoTypeForString(szEveryoneSpecialUnit, true);5960	const char* szCreateSound = kResults.GetText("CreateSound");61	SetCreateSound(szCreateSound);6263	const char* szAnyonePrereqProject = kResults.GetText("AnyonePrereqProject");64	m_iAnyoneProjectPrereq = GC.getInfoTypeForString(szAnyonePrereqProject, true);6566	//Arrays67	const char* szProjectType = GetType();68	kUtility.PopulateArrayByValue(m_piResourceQuantityRequirements, "Resources", "Project_ResourceQuantityRequirements", "ResourceType", "ProjectType", szProjectType, "Quantity");6970	//Victory Thresholds71	{72		const int iNumVictories = kUtility.MaxRows("Victories");7374		kUtility.InitializeArray(m_piVictoryThreshold, iNumVictories);75		kUtility.InitializeArray(m_piVictoryMinThreshold, iNumVictories);7677		Database::Results kDBResults;78		char szQuery[512] = {0};79		sprintf_s(szQuery, "select VictoryType, Threshold, MinThreshold from Project_VictoryThresholds where ProjectType = '%s';", szProjectType);80		if(DB.Execute(kDBResults, szQuery))81		{82			while(kDBResults.Step())83			{84				const char* szVictoryType = kDBResults.GetText("VictoryType");85				const int idx = GC.getInfoTypeForString(szVictoryType, true);8687				const int iThreshold = kDBResults.GetInt("Threshold");88				const int iMinThreshold = kDBResults.GetInt("MinThreshold");8990				m_piVictoryThreshold[idx] = iThreshold;91				m_piVictoryMinThreshold[idx] = iMinThreshold;92			}93		}94	}9596	kUtility.SetFlavors(m_piFlavorValue, "Project_Flavors", "ProjectType", szProjectType);97	kUtility.PopulateArrayByValue(m_piProjectsNeeded, "Projects", "Project_Prereqs", "PrereqProjectType", "ProjectType", szProjectType, "AmountNeeded");9899	return true;100}

Calls