Bazaar developer reference

CvPlayer::doTurnUnits()

Defined in
CvPlayer.cpp, line 4894
Class
CvPlayer
Hook name
CivHooks::CvPlayer_doTurnUnits

Hooks

static bool BeforeCvPlayer_doTurnUnits(CvPlayer* self);static void AfterCvPlayer_doTurnUnits(CvPlayer* self);static void ReplaceCvPlayer_doTurnUnits(void (*original)(CvPlayer*), CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_doTurnUnits>(host, &BeforeCvPlayer_doTurnUnits);CivRegisterAfter<CivHooks::CvPlayer_doTurnUnits>(host, &AfterCvPlayer_doTurnUnits);CivRegisterReplace<CivHooks::CvPlayer_doTurnUnits>(host, &ReplaceCvPlayer_doTurnUnits);

Code

4894void CvPlayer::doTurnUnits()4895{4896	CvArmyAI* pLoopArmyAI;4897	CvUnit* pLoopUnit;4898	int iLoop;48994900	AI_doTurnUnitsPre();49014902	// Start: TACTICAL AI UNIT PROCESSING4903	m_pTacticalAI->DoTurn();49044905	// Start: OPERATIONAL AI UNIT PROCESSING4906	std::map<int, CvAIOperation*>::iterator iter;4907	bool bKilledSomething;4908	do4909	{4910		bKilledSomething = false;4911		for(iter = m_AIOperations.begin(); iter != m_AIOperations.end(); ++iter)4912		{4913			CvAIOperation* pThisOperation = iter->second;4914			if(pThisOperation)4915			{4916				if(pThisOperation->DoDelayedDeath())4917				{4918					bKilledSomething = true;4919					break;4920				}4921			}4922		}4923		// hack4924	}4925	while(bKilledSomething);49264927	for(pLoopArmyAI = firstArmyAI(&iLoop); pLoopArmyAI != NULL; pLoopArmyAI = nextArmyAI(&iLoop))4928	{4929		pLoopArmyAI->DoDelayedDeath();4930	}49314932	for(pLoopUnit = firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = nextUnit(&iLoop))4933	{4934		pLoopUnit->doDelayedDeath();4935	}49364937	for(iter = m_AIOperations.begin(); iter != m_AIOperations.end(); ++iter)4938	{4939		CvAIOperation* pThisOperation = iter->second;4940		if(pThisOperation)4941		{4942			pThisOperation->DoTurn();4943		}4944	}49454946	do4947	{4948		bKilledSomething = false;4949		for(iter = m_AIOperations.begin(); iter != m_AIOperations.end(); ++iter)4950		{4951			CvAIOperation* pThisOperation = iter->second;4952			if(pThisOperation)4953			{4954				if(pThisOperation->DoDelayedDeath())4955				{4956					bKilledSomething = true;4957					break;4958				}4959			}4960		}4961		// hack4962	}4963	while(bKilledSomething);49644965	for(pLoopArmyAI = firstArmyAI(&iLoop); pLoopArmyAI != NULL; pLoopArmyAI = nextArmyAI(&iLoop))4966	{4967		pLoopArmyAI->DoTurn();4968	}49694970	// Homeland AI4971	m_pHomelandAI->DoTurn();49724973	// Start: old unit AI processing4974	for(int iPass = 0; iPass < 4; iPass++)4975	{4976		for(pLoopUnit = firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = nextUnit(&iLoop))4977		{4978			switch(pLoopUnit->getDomainType())4979			{4980			case DOMAIN_AIR:4981				if(iPass == 1)4982				{4983					pLoopUnit->doTurn();4984				}4985				break;4986			case DOMAIN_SEA:4987				if(iPass == 2)4988				{4989					pLoopUnit->doTurn();4990				}4991				break;4992			case DOMAIN_LAND:4993				if(iPass == 3)4994				{4995					pLoopUnit->doTurn();4996				}4997				break;4998			case DOMAIN_IMMOBILE:4999				if(iPass == 0)5000				{5001					pLoopUnit->doTurn();5002				}5003				break;5004			case NO_DOMAIN:5005				CvAssertMsg(false, "Unit with no Domain");5006				break;5007			default:5008				if(iPass == 3)5009				{5010					pLoopUnit->doTurn();5011				}5012				break;5013			}5014		}5015	}50165017	if(GetID() == GC.getGame().getActivePlayer())5018	{5019		GC.GetEngineUserInterface()->setDirty(Waypoints_DIRTY_BIT, true);5020		GC.GetEngineUserInterface()->setDirty(SelectionButtons_DIRTY_BIT, true);5021	}50225023	GC.GetEngineUserInterface()->setDirty(UnitInfo_DIRTY_BIT, true);50245025	AI_doTurnUnitsPost();5026}

Calls

Called by