Hooks
static bool BeforeCvUnitProductionAI_LogPossibleBuilds(CvUnitProductionAI* self, UnitAITypes eUnitAIType);static void AfterCvUnitProductionAI_LogPossibleBuilds(CvUnitProductionAI* self, UnitAITypes eUnitAIType);static void ReplaceCvUnitProductionAI_LogPossibleBuilds(void (*original)(CvUnitProductionAI*, UnitAITypes), CvUnitProductionAI* self, UnitAITypes eUnitAIType);CivRegisterBefore<CivHooks::CvUnitProductionAI_LogPossibleBuilds>(host, &BeforeCvUnitProductionAI_LogPossibleBuilds);CivRegisterAfter<CivHooks::CvUnitProductionAI_LogPossibleBuilds>(host, &AfterCvUnitProductionAI_LogPossibleBuilds);CivRegisterReplace<CivHooks::CvUnitProductionAI_LogPossibleBuilds>(host, &ReplaceCvUnitProductionAI_LogPossibleBuilds);
Code
265/// Log all potential builds266void CvUnitProductionAI::LogPossibleBuilds(UnitAITypes eUnitAIType)267{268 if(GC.getLogging() && GC.getAILogging())269 {270 // Find the name of this civ and city271 CvString playerName = GET_PLAYER(m_pCity->getOwner()).getCivilizationShortDescription();272 CvString cityName = m_pCity->getName();273274 // Open the log file275 FILogFile* pLog = LOGFILEMGR.GetLog(m_pCity->GetCityStrategyAI()->GetLogFileName(playerName, cityName), FILogFile::kDontTimeStamp);276277 // Get the leading info for this line278 CvString strBaseString;279 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());280 strBaseString += playerName + ", " + cityName + ", ";281282283 // Dump out the weight of each buildable item284 for(int iI = 0; iI < m_Buildables.size(); iI++)285 {286 CvString strOutBuf = strBaseString;287288 CvUnitEntry* pUnitEntry = GC.GetGameUnits()->GetEntry(m_Buildables.GetElement(iI));289290 CvString strDesc = (pUnitEntry != NULL)? pUnitEntry->GetDescription() : "Unknown Unit";291 if(eUnitAIType == NO_UNITAI)292 {293 CvString strTemp;294 strTemp.Format("Unit, %s, %d", strDesc.GetCString(), m_Buildables.GetWeight(iI));295 strOutBuf += strTemp;296 }297 else298 {299 CvString strTempString;300 getUnitAIString(strTempString, eUnitAIType);301302 CvString strTemp;303 strTemp.Format("Special request for unit of type: %s, %s, %d", strTempString.GetCString(), strDesc.GetCString(), m_Buildables.GetWeight(iI));304 strOutBuf += strTemp;305 }306307 pLog->Msg(strOutBuf);308 }309 }310}