Bazaar developer reference

CvMilitaryAI::LogAvailableForces()

Defined in
CvMilitaryAI.cpp, line 4252
Class
CvMilitaryAI
Hook name
CivHooks::CvMilitaryAI_LogAvailableForces

Hooks

static bool BeforeCvMilitaryAI_LogAvailableForces(CvMilitaryAI* self);static void AfterCvMilitaryAI_LogAvailableForces(CvMilitaryAI* self);static void ReplaceCvMilitaryAI_LogAvailableForces(void (*original)(CvMilitaryAI*), CvMilitaryAI* self);CivRegisterBefore<CivHooks::CvMilitaryAI_LogAvailableForces>(host, &BeforeCvMilitaryAI_LogAvailableForces);CivRegisterAfter<CivHooks::CvMilitaryAI_LogAvailableForces>(host, &AfterCvMilitaryAI_LogAvailableForces);CivRegisterReplace<CivHooks::CvMilitaryAI_LogAvailableForces>(host, &ReplaceCvMilitaryAI_LogAvailableForces);

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}

Calls

Called by