CvProjectProductionAI::RecommendProject()
- Defined in
- CvProjectProductionAI.cpp, line 98
- Class
- CvProjectProductionAI
- Hook name
CivHooks::CvProjectProductionAI_RecommendProject
Hooks
static bool BeforeCvProjectProductionAI_RecommendProject(CvProjectProductionAI* self, ProjectTypes& result);static void AfterCvProjectProductionAI_RecommendProject(CvProjectProductionAI* self, ProjectTypes& result);static ProjectTypes ReplaceCvProjectProductionAI_RecommendProject(ProjectTypes (*original)(CvProjectProductionAI*), CvProjectProductionAI* self);CivRegisterBefore<CivHooks::CvProjectProductionAI_RecommendProject>(host, &BeforeCvProjectProductionAI_RecommendProject);CivRegisterAfter<CivHooks::CvProjectProductionAI_RecommendProject>(host, &AfterCvProjectProductionAI_RecommendProject);CivRegisterReplace<CivHooks::CvProjectProductionAI_RecommendProject>(host, &ReplaceCvProjectProductionAI_RecommendProject);
Code
97/// Recommend highest-weighted Project98ProjectTypes CvProjectProductionAI::RecommendProject()99{100 CvAssert(m_pCity);101 if(!m_pCity)102 return NO_PROJECT;103104 int iProjectLoop;105 int iWeight;106 int iTurnsLeft;107108 // Reset list of all the possible projects109 m_Buildables.clear();110111 // Loop through adding the available projects112 for(iProjectLoop = 0; iProjectLoop < GC.GetGameProjects()->GetNumProjects(); iProjectLoop++)113 {114 // Make sure this project can be built now115 if(m_pCity->canCreate((ProjectTypes)iProjectLoop))116 {117 // Update weight based on turns to construct118 iTurnsLeft = m_pCity->getProductionTurnsLeft((ProjectTypes) iProjectLoop, 0);119 iWeight = CityStrategyAIHelpers::ReweightByTurnsLeft(m_ProjectAIWeights.GetWeight((ProjectTypes)iProjectLoop), iTurnsLeft);120 m_Buildables.push_back(iProjectLoop, iWeight);121 }122 }123124 // Sort items and grab the first one125 if(m_Buildables.size() > 0)126 {127 m_Buildables.SortItems();128 LogPossibleBuilds();129 return (ProjectTypes)m_Buildables.GetElement(0);130 }131132 // Unless we didn't find any133 else134 {135 return NO_PROJECT;136 }137}
Calls
- CityStrategyAIHelpers::ReweightByTurnsLeft(int, int)
- CvCity::canCreate(ProjectTypes, bool, bool) const
- CvCity::getProductionTurnsLeft(ProjectTypes, int) const
- CvGlobals::GetGameProjects() const
- CvProjectProductionAI::LogPossibleBuilds()
- CvProjectXMLEntries::GetNumProjects()
CvWeightedVector::clearCvWeightedVector::GetElementCvWeightedVector::GetWeightCvWeightedVector::push_backCvWeightedVector::sizeCvWeightedVector::SortItems