CvTeam::DoMinorCivTech()
- Defined in
- CvTeam.cpp, line 909
- Class
- CvTeam
- Hook name
CivHooks::CvTeam_DoMinorCivTech
Hooks
static bool BeforeCvTeam_DoMinorCivTech(CvTeam* self);static void AfterCvTeam_DoMinorCivTech(CvTeam* self);static void ReplaceCvTeam_DoMinorCivTech(void (*original)(CvTeam*), CvTeam* self);CivRegisterBefore<CivHooks::CvTeam_DoMinorCivTech>(host, &BeforeCvTeam_DoMinorCivTech);CivRegisterAfter<CivHooks::CvTeam_DoMinorCivTech>(host, &AfterCvTeam_DoMinorCivTech);CivRegisterReplace<CivHooks::CvTeam_DoMinorCivTech>(host, &ReplaceCvTeam_DoMinorCivTech);
Code
908/// Minor Civ Tech Progress909void CvTeam::DoMinorCivTech()910{911 int iCount;912913 TechTypes eTech;914 TeamTypes eTeam;915916 int iPossibleCount = 0;917918 // See how many majors are still around919 int iTeamLoop;920 for(iTeamLoop = 0; iTeamLoop < MAX_CIV_TEAMS; iTeamLoop++)921 {922 eTeam = (TeamTypes) iTeamLoop;923924 if(GET_TEAM(eTeam).isAlive())925 {926 if(!GET_TEAM(eTeam).isMinorCiv())927 {928 iPossibleCount++;929 }930 }931 }932933 CvAssertMsg(iPossibleCount > 0, "Zero possible players? Uhhh...");934935 // 40% of majors (rounded down) need the tech for the Minors to get it936 int iTechPercent = /*40*/ GC.getMINOR_CIV_TECH_PERCENT();937 int iTeamsNeeded = max(1, iPossibleCount * iTechPercent / 100);938939 for(int iTechLoop = 0; iTechLoop < GC.getNumTechInfos(); iTechLoop++)940 {941 eTech = (TechTypes) iTechLoop;942943 if(!GetTeamTechs()->HasTech(eTech))944 {945 iCount = 0;946947 for(iTeamLoop = 0; iTeamLoop < MAX_CIV_TEAMS; iTeamLoop++)948 {949 eTeam = (TeamTypes) iTeamLoop;950951 if(GET_TEAM(eTeam).isAlive())952 {953 // Only look at Majors954 if(!GET_TEAM(eTeam).isMinorCiv())955 {956 if(GET_TEAM(eTeam).GetTeamTechs()->HasTech(eTech))957 {958 iCount++;959 }960 }961 }962 }963964 // Do enough majors have this tech?965 if(iCount >= iTeamsNeeded)966 {967 setHasTech(eTech, true, getLeaderID(), false, false);968 }969 }970 }971}
Calls
- CvGlobals::getMINOR_CIV_TECH_PERCENT()
- CvGlobals::getNumTechInfos()
- CvTeam::getLeaderID() const
- CvTeam::getTeam(TeamTypes)
- CvTeam::GetTeamTechs() const
- CvTeam::isAlive() const
- CvTeam::isMinorCiv() const
- CvTeam::setHasTech(TechTypes, bool, PlayerTypes, bool, bool)
- CvTeamTechs::HasTech(TechTypes) const
std::max