CvGame::initScoreCalculation()
- Defined in
- CvGame.cpp, line 4939
- Class
- CvGame
- Hook name
CivHooks::CvGame_initScoreCalculation
Hooks
static bool BeforeCvGame_initScoreCalculation(CvGame* self);static void AfterCvGame_initScoreCalculation(CvGame* self);static void ReplaceCvGame_initScoreCalculation(void (*original)(CvGame*), CvGame* self);CivRegisterBefore<CivHooks::CvGame_initScoreCalculation>(host, &BeforeCvGame_initScoreCalculation);CivRegisterAfter<CivHooks::CvGame_initScoreCalculation>(host, &AfterCvGame_initScoreCalculation);CivRegisterReplace<CivHooks::CvGame_initScoreCalculation>(host, &ReplaceCvGame_initScoreCalculation);
Code
4939void CvGame::initScoreCalculation()4940{4941 // initialize score calculation4942 int iMaxFood = 0;4943 for(int i = 0; i < GC.getMap().numPlots(); i++)4944 {4945 CvPlot* pPlot = GC.getMap().plotByIndexUnchecked(i);4946 if(!pPlot->isWater() || pPlot->isAdjacentToLand())4947 {4948 iMaxFood += pPlot->calculateBestNatureYield(YIELD_FOOD, NO_TEAM);4949 }4950 }4951 m_iMaxPopulation = getPopulationScore(iMaxFood / std::max(1, GC.getFOOD_CONSUMPTION_PER_POPULATION()));4952 if(NO_ERA != getStartEra())4953 {4954 CvEraInfo& kStartEra = getStartEraInfo();4955 int iNumSettlers = kStartEra.getStartingUnitMultiplier();4956 m_iInitPopulation = getPopulationScore(iNumSettlers * (kStartEra.getFreePopulation() + 1));4957#if defined(MOD_GLOBAL_CITY_WORKING)4958 m_iInitLand = getLandPlotsScore(iNumSettlers * AVG_CITY_PLOTS);4959#else4960 m_iInitLand = getLandPlotsScore(iNumSettlers * NUM_CITY_PLOTS);4961#endif4962 }4963 else4964 {4965 m_iInitPopulation = 0;4966 m_iInitLand = 0;4967 }49684969 m_iInitTech = 0;4970 for(int i = 0; i < GC.getNumTechInfos(); i++)4971 {4972 const TechTypes eTech = static_cast<TechTypes>(i);4973 CvTechEntry* pkTechInfo = GC.getTechInfo(eTech);4974 if(pkTechInfo)4975 {4976 if(pkTechInfo->GetEra() < getStartEra())4977 {4978 m_iInitTech += getTechScore(eTech);4979 }4980 else4981 {4982 // count all possible free techs as initial to lower the score from immediate retirement4983 for(int iCiv = 0; iCiv < GC.getNumCivilizationInfos(); iCiv++)4984 {4985 const CivilizationTypes eCivilization = static_cast<CivilizationTypes>(iCiv);4986 CvCivilizationInfo* pkCivilizationInfo = GC.getCivilizationInfo(eCivilization);4987 if(pkCivilizationInfo)4988 {4989 if(pkCivilizationInfo->isPlayable())4990 {4991 if(pkCivilizationInfo->isCivilizationFreeTechs(i))4992 {4993 m_iInitTech += getTechScore(eTech);4994 break;4995 }4996 }4997 }4998 }4999 }5000 }5001 }5002 m_iInitWonders = 0;5003}
Calls
- CvCivilizationBaseInfo::isPlayable() const
- CvCivilizationInfo::isCivilizationFreeTechs(int) const
- CvEraInfo::getFreePopulation() const
- CvEraInfo::getStartingUnitMultiplier() const
- CvGame::getStartEra() const
- CvGame::getStartEraInfo() const
- CvGlobals::getCivilizationInfo(CivilizationTypes)
- CvGlobals::getFOOD_CONSUMPTION_PER_POPULATION()
- CvGlobals::getMap()
- CvGlobals::getNumCivilizationInfos()
- CvGlobals::getNumTechInfos()
- CvGlobals::getTechInfo(TechTypes)
- CvMap::numPlots() const
- CvMap::plotByIndexUnchecked(int) const
- CvPlot::calculateBestNatureYield(YieldTypes, TeamTypes) const
- CvPlot::isAdjacentToLand() const
- CvPlot::isWater() const
- CvTechEntry::GetEra() const
- getLandPlotsScore(int)
- getPopulationScore(int)
- getTechScore(TechTypes)
std::max