CityStrategyAIHelpers::ReweightByTurnsLeft(int, int)
- Defined in
- CvCityStrategyAI.cpp, line 2154
- Hook name
CivHooks::CityStrategyAIHelpers_ReweightByTurnsLeft
Hooks
static bool BeforeCityStrategyAIHelpers_ReweightByTurnsLeft(int iOriginalWeight, int iTurnsLeft, int& result);static void AfterCityStrategyAIHelpers_ReweightByTurnsLeft(int iOriginalWeight, int iTurnsLeft, int& result);static int ReplaceCityStrategyAIHelpers_ReweightByTurnsLeft(int (*original)(int, int), int iOriginalWeight, int iTurnsLeft);CivRegisterBefore<CivHooks::CityStrategyAIHelpers_ReweightByTurnsLeft>(host, &BeforeCityStrategyAIHelpers_ReweightByTurnsLeft);CivRegisterAfter<CivHooks::CityStrategyAIHelpers_ReweightByTurnsLeft>(host, &AfterCityStrategyAIHelpers_ReweightByTurnsLeft);CivRegisterReplace<CivHooks::CityStrategyAIHelpers_ReweightByTurnsLeft>(host, &ReplaceCityStrategyAIHelpers_ReweightByTurnsLeft);
Code
2153/// Routine to reweight a city buildable based on time to build2154int CityStrategyAIHelpers::ReweightByTurnsLeft(int iOriginalWeight, int iTurnsLeft)2155{2156 // 10 turns will add 0.02; 80 turns will add 0.162157 double fAdditionalTurnCostFactor = GC.getAI_PRODUCTION_WEIGHT_MOD_PER_TURN_LEFT() * iTurnsLeft; // 0.0042158 double fTotalCostFactor = GC.getAI_PRODUCTION_WEIGHT_BASE_MOD() + fAdditionalTurnCostFactor; // 0.152159 double fWeightDivisor = pow((double) iTurnsLeft, fTotalCostFactor);21602161 /* Commented out for now: useful debug code for tweaking the exact effect of this function21622163 iTurnsLeft = 10;2164 fAdditionalTurnCostFactor = 0.004f * iTurnsLeft;2165 fTotalCostFactor = 0.15f + fAdditionalTurnCostFactor;2166 fWeightDivisor = pow((double) iTurnsLeft, fTotalCostFactor);21672168 iTurnsLeft = 20;2169 fAdditionalTurnCostFactor = 0.004f * iTurnsLeft;2170 fTotalCostFactor = 0.15f + fAdditionalTurnCostFactor;2171 fWeightDivisor = pow((double) iTurnsLeft, fTotalCostFactor);21722173 iTurnsLeft = 40;2174 fAdditionalTurnCostFactor = 0.004f * iTurnsLeft;2175 fTotalCostFactor = 0.15f + fAdditionalTurnCostFactor;2176 fWeightDivisor = pow((double) iTurnsLeft, fTotalCostFactor);21772178 iTurnsLeft = 80;2179 fAdditionalTurnCostFactor = 0.004f * iTurnsLeft;2180 fTotalCostFactor = 0.15f + fAdditionalTurnCostFactor;2181 fWeightDivisor = pow((double) iTurnsLeft, fTotalCostFactor);*/21822183 return int(double(iOriginalWeight) / fWeightDivisor);2184}