CvCitySiteEvaluator::ComputeFlavorMultipliers(CvPlayer *)
- Defined in
- CvSiteEvaluationClasses.cpp, line 188
- Class
- CvCitySiteEvaluator
- Hook name
CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers- Overridden by
- CvSiteEvaluatorForStart::ComputeFlavorMultipliers(CvPlayer *)
Hooks
static bool BeforeCvCitySiteEvaluator_ComputeFlavorMultipliers(CvCitySiteEvaluator* self, CvPlayer* pPlayer);static void AfterCvCitySiteEvaluator_ComputeFlavorMultipliers(CvCitySiteEvaluator* self, CvPlayer* pPlayer);static void ReplaceCvCitySiteEvaluator_ComputeFlavorMultipliers(void (*original)(CvCitySiteEvaluator*, CvPlayer*), CvCitySiteEvaluator* self, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &BeforeCvCitySiteEvaluator_ComputeFlavorMultipliers);CivRegisterAfter<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &AfterCvCitySiteEvaluator_ComputeFlavorMultipliers);CivRegisterReplace<CivHooks::CvCitySiteEvaluator_ComputeFlavorMultipliers>(host, &ReplaceCvCitySiteEvaluator_ComputeFlavorMultipliers);
Code
187/// Setup flavor multipliers - call once per player before PlotFoundValue() or PlotFertilityValue()188void CvCitySiteEvaluator::ComputeFlavorMultipliers(CvPlayer* pPlayer)189{190 // Set all to 0191 for(int iI = 0; iI < NUM_YIELD_TYPES; iI++)192 {193 m_iFlavorMultiplier[iI] = 0;194 }195196 m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] = 0;197198 // Find out if player has a desired next city specialization199 CitySpecializationTypes eNextSpecialization = pPlayer->GetCitySpecializationAI()->GetNextSpecializationDesired();200 CvCitySpecializationXMLEntry* pkCitySpecializationEntry = NULL;201 if(eNextSpecialization != NO_CITY_SPECIALIZATION)202 pkCitySpecializationEntry = GC.getCitySpecializationInfo(eNextSpecialization);203204205 for(int iFlavorLoop = 0; iFlavorLoop < GC.getNumFlavorTypes(); iFlavorLoop++)206 {207 const FlavorTypes eFlavor = static_cast<FlavorTypes>(iFlavorLoop);208 const CvString& strFlavor = GC.getFlavorTypes(eFlavor);209 if(strFlavor == "FLAVOR_GROWTH" ||210 strFlavor == "FLAVOR_EXPANSION")211 {212 m_iFlavorMultiplier[YIELD_FOOD] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);213 if(pkCitySpecializationEntry)214 {215 m_iFlavorMultiplier[YIELD_FOOD] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);216 }217 }218 else if(strFlavor == "FLAVOR_GOLD" ||219 strFlavor == "FLAVOR_TILE_IMPROVEMENT")220 {221 m_iFlavorMultiplier[YIELD_GOLD] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);222 if(pkCitySpecializationEntry)223 {224 m_iFlavorMultiplier[YIELD_GOLD] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);225 }226 }227 else if(strFlavor == "FLAVOR_PRODUCTION" ||228 strFlavor == "FLAVOR_WONDER")229 {230 m_iFlavorMultiplier[YIELD_PRODUCTION] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor);231 if(pkCitySpecializationEntry)232 {233 m_iFlavorMultiplier[YIELD_PRODUCTION] += pkCitySpecializationEntry->GetFlavorValue(eFlavor);234 }235 }236 else if(strFlavor == "FLAVOR_SCIENCE")237 {238 // Doubled since only one flavor related to science239 m_iFlavorMultiplier[YIELD_SCIENCE] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;240 if(pkCitySpecializationEntry)241 {242 m_iFlavorMultiplier[YIELD_SCIENCE] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;243 }244 }245 else if(strFlavor == "FLAVOR_HAPPINESS")246 {247 // Doubled since only one flavor related to Happiness248 m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;249 if(pkCitySpecializationEntry)250 {251 m_iFlavorMultiplier[SITE_EVALUATION_HAPPINESS] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;252 }253 }254 else if(strFlavor == "FLAVOR_RELIGION")255 {256 // Doubled since only one flavor related to faith257 m_iFlavorMultiplier[YIELD_FAITH] += pPlayer->GetFlavorManager()->GetPersonalityIndividualFlavor(eFlavor) * 2;258 if (pkCitySpecializationEntry)259 {260 m_iFlavorMultiplier[YIELD_FAITH] += pkCitySpecializationEntry->GetFlavorValue(eFlavor) * 2;261 }262 }263 }264265 // Make sure none are negative266 for(int iI = 0; iI < NUM_YIELD_TYPES; iI++)267 {268 if(m_iFlavorMultiplier[iI] < 0)269 {270 m_iFlavorMultiplier[iI] = 0;271 }272 }273274 // Set tradable resources and strategic value to times 10 (so multiplying this by the number of map gives a number from 1 to 100)275 m_iFlavorMultiplier[SITE_EVALUATION_RESOURCES] = 10;276 m_iFlavorMultiplier[SITE_EVALUATION_STRATEGIC] = 10;277}
Calls
- CvCitySpecializationAI::GetNextSpecializationDesired() const
- CvCitySpecializationXMLEntry::GetFlavorValue(int) const
- CvFlavorManager::GetPersonalityIndividualFlavor(FlavorTypes)
- CvGlobals::getCitySpecializationInfo(CitySpecializationTypes)
- CvGlobals::getFlavorTypes(FlavorTypes)
- CvGlobals::getNumFlavorTypes()
- CvPlayer::GetCitySpecializationAI() const
- CvPlayer::GetFlavorManager() const
std::operator==