Bazaar developer reference

CvAINavalEscortedOperation::ArmyInPosition(CvArmyAI *)

Defined in
CvAIOperation.cpp, line 5206
Class
CvAINavalEscortedOperation
Hook name
CivHooks::CvAINavalEscortedOperation_ArmyInPosition
Overrides
CvAIOperation::ArmyInPosition(CvArmyAI *)
Overridden by
CvAIOperationNavalAttack::ArmyInPosition(CvArmyAI *)

Hooks

static bool BeforeCvAINavalEscortedOperation_ArmyInPosition(CvAINavalEscortedOperation* self, CvArmyAI* pArmy, bool& result);static void AfterCvAINavalEscortedOperation_ArmyInPosition(CvAINavalEscortedOperation* self, CvArmyAI* pArmy, bool& result);static bool ReplaceCvAINavalEscortedOperation_ArmyInPosition(bool (*original)(CvAINavalEscortedOperation*, CvArmyAI*), CvAINavalEscortedOperation* self, CvArmyAI* pArmy);CivRegisterBefore<CivHooks::CvAINavalEscortedOperation_ArmyInPosition>(host, &BeforeCvAINavalEscortedOperation_ArmyInPosition);CivRegisterAfter<CivHooks::CvAINavalEscortedOperation_ArmyInPosition>(host, &AfterCvAINavalEscortedOperation_ArmyInPosition);CivRegisterReplace<CivHooks::CvAINavalEscortedOperation_ArmyInPosition>(host, &ReplaceCvAINavalEscortedOperation_ArmyInPosition);

Code

5205/// If at target, found city; if at muster point, merge settler and escort and move out5206bool CvAINavalEscortedOperation::ArmyInPosition(CvArmyAI* pArmy)5207{5208	int iUnitID = 0;5209	bool bStateChanged = false;5210	CvUnit* pSettler = 0, *pEscort = 0;5211	CvString strMsg;52125213	switch(m_eCurrentState)5214	{5215	case AI_OPERATION_STATE_MOVING_TO_TARGET:5216	case AI_OPERATION_STATE_AT_TARGET:52175218		// Call base class version and see if it thinks we're done5219		bStateChanged = CvAIOperation::ArmyInPosition(pArmy);52205221		// Now get the settler5222		iUnitID = pArmy->GetFirstUnitID();5223		if(iUnitID != -1)5224		{5225			pSettler = GET_PLAYER(m_eOwner).getUnit(iUnitID);5226		}52275228		if(pSettler != NULL)5229		{5230			CvPlot* pTargetPlot = GetTargetPlot();5231			const PlayerTypes pTargetPlotOwner = pTargetPlot->getOwner();52325233			CvPlot* pSettlerPlot = pSettler->plot();52345235			if((pTargetPlotOwner != NO_PLAYER && pTargetPlotOwner != m_eOwner) || pTargetPlot->IsAdjacentOwnedByOtherTeam(pSettler->getTeam()))5236			{5237				if(GC.getLogging() && GC.getAILogging())5238				{5239					strMsg.Format("Not at target but can no longer settle here. Target was (X=%d Y=%d)", pTargetPlot->getX(), pTargetPlot->getY());5240					LogOperationSpecialMessage(strMsg);5241				}5242				RetargetCivilian(pSettler, pArmy);5243				pSettler->finishMoves();5244				iUnitID = pArmy->GetNextUnitID();5245				if(iUnitID != -1)5246				{5247					pEscort = GET_PLAYER(m_eOwner).getUnit(iUnitID);5248					pEscort->finishMoves();5249				}5250			}5251			// If the settler made it, we don't care about the entire army5252			else if(pSettlerPlot == pTargetPlot && pSettler->canMove() && pSettler->canFound(pSettlerPlot))5253			{5254				pSettler->PushMission(CvTypes::getMISSION_FOUND());5255				if(GC.getLogging() && GC.getAILogging())5256				{5257					strMsg.Format("City founded, At X=%d, At Y=%d", pSettlerPlot->getX(), pSettlerPlot->getY());5258					LogOperationSpecialMessage(strMsg);5259				}5260				m_eCurrentState = AI_OPERATION_STATE_SUCCESSFUL_FINISH;5261			}52625263			// If we're at our target but can no longer found a city, might be someone else beat us to this area5264			// So move back out, picking a new target5265			else if(pSettlerPlot == GetTargetPlot() && !pSettler->canFound(pSettlerPlot))5266			{5267				if(GC.getLogging() && GC.getAILogging())5268				{5269					strMsg.Format("At target but can no longer settle here. Target was (X=%d Y=%d)", pTargetPlot->getX(), pTargetPlot->getY());5270					LogOperationSpecialMessage(strMsg);5271				}5272				RetargetCivilian(pSettler, pArmy);5273				pSettler->finishMoves();5274				iUnitID = pArmy->GetNextUnitID();5275				if(iUnitID != -1)5276				{5277					pEscort = GET_PLAYER(m_eOwner).getUnit(iUnitID);5278					pEscort->finishMoves();5279				}5280			}5281		}5282		break;52835284		// In all other cases use base class version5285	case AI_OPERATION_STATE_GATHERING_FORCES:5286	case AI_OPERATION_STATE_ABORTED:5287	case AI_OPERATION_STATE_RECRUITING_UNITS:5288		return CvAIOperation::ArmyInPosition(pArmy);5289		break;5290	};52915292	return bStateChanged;5293}

Calls