Bazaar developer reference

CvAIEnemyTerritoryOperation::Init(int, PlayerTypes, PlayerTypes, int, CvCity *, CvCity *)

Defined in
CvAIOperation.cpp, line 1873
Class
CvAIEnemyTerritoryOperation
Hook name
CivHooks::CvAIEnemyTerritoryOperation_Init
Overrides
CvAIOperation::Init(int, PlayerTypes, PlayerTypes, int, CvCity *, CvCity *)
Overridden by
CvAINavalOperation::Init(int, PlayerTypes, PlayerTypes, int, CvCity *, CvCity *), CvAIOperationBasicCityAttack::Init(int, PlayerTypes, PlayerTypes, int, CvCity *, CvCity *)

Hooks

static bool BeforeCvAIEnemyTerritoryOperation_Init(CvAIEnemyTerritoryOperation* self, int iID, PlayerTypes eOwner, PlayerTypes eEnemy, int arg3, CvCity* arg4, CvCity* arg5);static void AfterCvAIEnemyTerritoryOperation_Init(CvAIEnemyTerritoryOperation* self, int iID, PlayerTypes eOwner, PlayerTypes eEnemy, int arg3, CvCity* arg4, CvCity* arg5);static void ReplaceCvAIEnemyTerritoryOperation_Init(void (*original)(CvAIEnemyTerritoryOperation*, int, PlayerTypes, PlayerTypes, int, CvCity*, CvCity*), CvAIEnemyTerritoryOperation* self, int iID, PlayerTypes eOwner, PlayerTypes eEnemy, int arg3, CvCity* arg4, CvCity* arg5);CivRegisterBefore<CivHooks::CvAIEnemyTerritoryOperation_Init>(host, &BeforeCvAIEnemyTerritoryOperation_Init);CivRegisterAfter<CivHooks::CvAIEnemyTerritoryOperation_Init>(host, &AfterCvAIEnemyTerritoryOperation_Init);CivRegisterReplace<CivHooks::CvAIEnemyTerritoryOperation_Init>(host, &ReplaceCvAIEnemyTerritoryOperation_Init);

Code

1872/// Kick off this operation1873void CvAIEnemyTerritoryOperation::Init(int iID, PlayerTypes eOwner, PlayerTypes eEnemy, int /* iDefaultArea */, CvCity*, CvCity*)1874{1875	Reset();1876	m_eMoveType = AI_OPERATION_MOVETYPE_ENEMY_TERRITORY;1877	m_iID = iID;1878	m_eOwner = eOwner;1879	m_eEnemy = eEnemy;18801881	if(iID != -1)1882	{1883		// create the armies that are needed and set the state to ARMYAISTATE_WAITING_FOR_UNITS_TO_REINFORCE1884		CvPlayer& kPlayer = GET_PLAYER(m_eOwner);1885		CvArmyAI* pArmyAI = kPlayer.addArmyAI();1886		if(pArmyAI)1887		{1888			m_viArmyIDs.push_back(pArmyAI->GetID());1889			pArmyAI->Init(pArmyAI->GetID(),m_eOwner,m_iID);1890			pArmyAI->SetArmyAIState(ARMYAISTATE_WAITING_FOR_UNITS_TO_REINFORCE);1891			pArmyAI->SetFormationIndex(GetFormation());18921893			// Figure out the initial rally point1894			CvPlot* pTargetPlot = FindBestTarget();1895			if(pTargetPlot != NULL)1896			{1897				SetTargetPlot(pTargetPlot);1898				pArmyAI->SetGoalPlot(pTargetPlot);1899				if(SelectInitialMusterPoint(pArmyAI) != NULL)1900				{1901					pArmyAI->SetXY(GetMusterPlot()->getX(), GetMusterPlot()->getY());1902					SetDefaultArea(GetMusterPlot()->getArea());19031904					if (GetDefaultArea() != pTargetPlot->getArea())1905					{1906						pArmyAI->SetGoalPlot(pTargetPlot);1907					}1908					else1909					{1910						CvPlot* pDeployPt;1911						pDeployPt = GC.getStepFinder().GetXPlotsFromEnd(GetOwner(), GetEnemy(), GetMusterPlot(), GetTargetPlot(), (GetDeployRange() / 2), true);1912						if (pDeployPt)1913						{1914							pArmyAI->SetGoalPlot(pDeployPt);1915						}1916						else1917						{1918							// No path, abort1919							m_eCurrentState = AI_OPERATION_STATE_ABORTED;1920							m_eAbortReason = AI_ABORT_LOST_PATH;1921						}1922					}19231924					// Find the list of units we need to build before starting this operation in earnest1925					BuildListOfUnitsWeStillNeedToBuild();19261927					// try to get as many units as possible from existing units that are waiting around1928					if(GrabUnitsFromTheReserves(GetMusterPlot(), pTargetPlot))1929					{1930						pArmyAI->SetArmyAIState(ARMYAISTATE_WAITING_FOR_UNITS_TO_CATCH_UP);1931						m_eCurrentState = AI_OPERATION_STATE_GATHERING_FORCES;1932					}1933					else1934					{1935						m_eCurrentState = AI_OPERATION_STATE_RECRUITING_UNITS;1936					}19371938					LogOperationStart();1939				}1940				else1941				{1942					// No muster point, abort1943					m_eCurrentState = AI_OPERATION_STATE_ABORTED;1944					m_eAbortReason = AI_ABORT_NO_MUSTER;1945				}1946			}19471948			else1949			{1950				// Lost our target, abort1951				m_eCurrentState = AI_OPERATION_STATE_ABORTED;1952				m_eAbortReason = AI_ABORT_LOST_TARGET;1953			}1954		}1955	}1956}

Calls