Bazaar developer reference

CvGame::GetResearchLeftToTech(TeamTypes, TechTypes)

Defined in
CvGame.cpp, line 6932
Class
CvGame
Hook name
CivHooks::CvGame_GetResearchLeftToTech

Hooks

static bool BeforeCvGame_GetResearchLeftToTech(CvGame* self, TeamTypes eTeam, TechTypes eTech, int& result);static void AfterCvGame_GetResearchLeftToTech(CvGame* self, TeamTypes eTeam, TechTypes eTech, int& result);static int ReplaceCvGame_GetResearchLeftToTech(int (*original)(CvGame*, TeamTypes, TechTypes), CvGame* self, TeamTypes eTeam, TechTypes eTech);CivRegisterBefore<CivHooks::CvGame_GetResearchLeftToTech>(host, &BeforeCvGame_GetResearchLeftToTech);CivRegisterAfter<CivHooks::CvGame_GetResearchLeftToTech>(host, &AfterCvGame_GetResearchLeftToTech);CivRegisterReplace<CivHooks::CvGame_GetResearchLeftToTech>(host, &ReplaceCvGame_GetResearchLeftToTech);

Code

6931/// Recursive function to see how much Research is left to get to a Tech6932int CvGame::GetResearchLeftToTech(TeamTypes eTeam, TechTypes eTech)6933{6934	CvTechEntry* pkTechInfo = GC.getTechInfo(eTech);69356936	//THIS SHOULD NEVER HAPPEN!6937	if(pkTechInfo == NULL)6938		return 0;69396940	// Base Case - first Prereq AND Tech does not exist6941	if(pkTechInfo->GetPrereqAndTechs(0) == NO_TECH)6942	{6943		return pkTechInfo->GetResearchCost();6944	}69456946	// Another base case! - Team already has tech6947	if(eTeam != NO_TEAM && GET_TEAM(eTeam).GetTeamTechs()->HasTech(eTech))6948	{6949		return 0;6950	}69516952	int iPrereqTechCost = 0;6953	TechTypes ePreReq;69546955	for(int i = 0; i < GC.getNUM_AND_TECH_PREREQS(); i++)6956	{6957		ePreReq = (TechTypes) pkTechInfo->GetPrereqAndTechs(i);69586959		if(ePreReq != NO_TECH)6960		{6961			iPrereqTechCost += GetResearchLeftToTech(eTeam, ePreReq);6962		}6963	}69646965	return pkTechInfo->GetResearchCost() + iPrereqTechCost;6966}

Calls

Called by