Code
4251/// Log some military status info each turn4252void CvMilitaryAI::LogAvailableForces()4253{4254 if(GC.getLogging() && GC.getAILogging())4255 {4256 CvString strOutBuf;4257 CvString strBaseString;4258 CvString playerName;4259 CvString strTemp;4260 FILogFile* pLog;4261 int iCapitalX = 0;4262 int iCapitalY = 0;4263 CvCity* pCapital = GetPlayer()->getCapitalCity();4264 if(pCapital)4265 {4266 iCapitalX = pCapital->getX();4267 iCapitalY = pCapital->getY();4268 }42694270 // Open the right file4271 playerName = GetPlayer()->getCivilizationShortDescription();4272 pLog = LOGFILEMGR.GetLog(GetLogFileName(playerName), FILogFile::kDontTimeStamp);42734274 // Get the leading info for this line4275 strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());4276 strBaseString += playerName + ", ";42774278 if(m_eArmyTypeBeingBuilt == ARMY_TYPE_LAND)4279 {4280 strTemp = "Land Army Under Construction";4281 }4282 else4283 {4284 strTemp = "Naval Invasion Under Construction";4285 }4286 strOutBuf = strBaseString + strTemp;4287 pLog->Msg(strOutBuf);42884289 // Loop through our units4290 CvUnit* pLoopUnit;4291 int iLoop;4292 for(pLoopUnit = m_pPlayer->firstUnit(&iLoop); pLoopUnit; pLoopUnit = m_pPlayer->nextUnit(&iLoop))4293 {4294 // Never want immobile/dead units, explorers, ones that have already moved or automated human units4295 if(pLoopUnit->TurnProcessed() || pLoopUnit->isDelayedDeath() || pLoopUnit->AI_getUnitAIType() == UNITAI_UNKNOWN || pLoopUnit->AI_getUnitAIType() == UNITAI_EXPLORE || !pLoopUnit->canMove() || pLoopUnit->isHuman())4296 {4297 continue;4298 }42994300 // Now down to land and sea units ... in these groups our unit must have a base combat strength ... or be a great general/admiral4301 else if(!pLoopUnit->IsCombatUnit() && !(pLoopUnit->IsGreatGeneral() || pLoopUnit->IsGreatAdmiral()))4302 {4303 continue;4304 }43054306 // No units finishing up operations4307 else if(pLoopUnit->GetDeployFromOperationTurn() + GC.getAI_TACTICAL_MAP_TEMP_ZONE_TURNS() >= GC.getGame().getGameTurn())4308 {4309 continue;4310 }43114312 int iArmyID = pLoopUnit->getArmyID();4313 int iDist = plotDistance(pLoopUnit->getX(), pLoopUnit->getY(), iCapitalX, iCapitalY);4314 strTemp.Format("%s, Damage=%d, ArmyID=%d, X=%d, Y=%d, DistFromCap=%d", pLoopUnit->getName().GetCString(), pLoopUnit->getDamage(), iArmyID, pLoopUnit->getX(), pLoopUnit->getY(), iDist);4315 strOutBuf = strBaseString + strTemp;43164317 pLog->Msg(strOutBuf);4318 }4319 }4320}