Bazaar developer reference

CvBuildingProductionAI::RecommendBuilding()

Defined in
CvBuildingProductionAI.cpp, line 155
Class
CvBuildingProductionAI
Hook name
CivHooks::CvBuildingProductionAI_RecommendBuilding

Hooks

static bool BeforeCvBuildingProductionAI_RecommendBuilding(CvBuildingProductionAI* self, BuildingTypes& result);static void AfterCvBuildingProductionAI_RecommendBuilding(CvBuildingProductionAI* self, BuildingTypes& result);static BuildingTypes ReplaceCvBuildingProductionAI_RecommendBuilding(BuildingTypes (*original)(CvBuildingProductionAI*), CvBuildingProductionAI* self);CivRegisterBefore<CivHooks::CvBuildingProductionAI_RecommendBuilding>(host, &BeforeCvBuildingProductionAI_RecommendBuilding);CivRegisterAfter<CivHooks::CvBuildingProductionAI_RecommendBuilding>(host, &AfterCvBuildingProductionAI_RecommendBuilding);CivRegisterReplace<CivHooks::CvBuildingProductionAI_RecommendBuilding>(host, &ReplaceCvBuildingProductionAI_RecommendBuilding);

Code

154/// Recommend highest-weighted building155BuildingTypes CvBuildingProductionAI::RecommendBuilding()156{157	int iBldgLoop;158	int iWeight;159	int iTurnsLeft;160161	// Reset list of all the possible buildings162	m_Buildables.clear();163164	// Loop through adding the available buildings165	for(iBldgLoop = 0; iBldgLoop < GC.GetGameBuildings()->GetNumBuildings(); iBldgLoop++)166	{167		// Make sure this building can be built now168		if(m_pCity->canConstruct((BuildingTypes)iBldgLoop))169		{170			// Update weight based on turns to construct171			iTurnsLeft = m_pCity->getProductionTurnsLeft((BuildingTypes) iBldgLoop, 0);172			iWeight = CityStrategyAIHelpers::ReweightByTurnsLeft(m_BuildingAIWeights.GetWeight((BuildingTypes)iBldgLoop), iTurnsLeft);173			m_Buildables.push_back(iBldgLoop, iWeight);174		}175	}176177	// Sort items and grab the first one178	if(m_Buildables.size() > 0)179	{180		m_Buildables.SortItems();181		LogPossibleBuilds();182		return (BuildingTypes)m_Buildables.GetElement(0);183	}184185	// Unless we didn't find any186	else187	{188		return NO_BUILDING;189	}190}

Calls