Bazaar developer reference

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}

Calls

Called by