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}