Bazaar developer reference

CvPlayerEspionage::MoveSpyTo(CvCity *, uint, bool)

Defined in
CvEspionageClasses.cpp, line 1441
Class
CvPlayerEspionage
Hook name
CivHooks::CvPlayerEspionage_MoveSpyTo

Hooks

static bool BeforeCvPlayerEspionage_MoveSpyTo(CvPlayerEspionage* self, CvCity* pCity, uint uiSpyIndex, bool bAsDiplomat, bool& result);static void AfterCvPlayerEspionage_MoveSpyTo(CvPlayerEspionage* self, CvCity* pCity, uint uiSpyIndex, bool bAsDiplomat, bool& result);static bool ReplaceCvPlayerEspionage_MoveSpyTo(bool (*original)(CvPlayerEspionage*, CvCity*, uint, bool), CvPlayerEspionage* self, CvCity* pCity, uint uiSpyIndex, bool bAsDiplomat);CivRegisterBefore<CivHooks::CvPlayerEspionage_MoveSpyTo>(host, &BeforeCvPlayerEspionage_MoveSpyTo);CivRegisterAfter<CivHooks::CvPlayerEspionage_MoveSpyTo>(host, &AfterCvPlayerEspionage_MoveSpyTo);CivRegisterReplace<CivHooks::CvPlayerEspionage_MoveSpyTo>(host, &ReplaceCvPlayerEspionage_MoveSpyTo);

Code

1440/// MoveSpyTo - Move a spy into this city1441bool CvPlayerEspionage::MoveSpyTo(CvCity* pCity, uint uiSpyIndex, bool bAsDiplomat)1442{1443	CvAssertMsg(uiSpyIndex < m_aSpyList.size(), "iSpyIndex is out of bounds");1444	if(uiSpyIndex >= m_aSpyList.size())1445	{1446		return false;1447	}14481449	if(!CanMoveSpyTo(pCity, uiSpyIndex, bAsDiplomat))1450	{1451		return false;1452	}14531454	CvCity* pOldCity = NULL;14551456	if(IsSpyInCity(uiSpyIndex))1457	{1458		pOldCity = GetCityWithSpy(uiSpyIndex);1459		// trying to move into a city where the spy is already at1460		if(pCity == pOldCity)1461		{1462			return true;1463		}14641465		if(!ExtractSpyFromCity(uiSpyIndex))1466		{1467			CvAssertMsg(false, "Failed to extract spy");1468			return false;1469		}1470	}14711472	if(pCity)1473	{1474		CvCityEspionage* pCityEspionage = pCity->GetCityEspionage();1475		CvAssertMsg(pCityEspionage, "Could not get CvCityEspionage from pCity");1476		if(!pCityEspionage)1477		{1478			return false;1479		}14801481		m_aSpyList[uiSpyIndex].m_iCityX = pCity->getX();1482		m_aSpyList[uiSpyIndex].m_iCityY = pCity->getY();1483		pCityEspionage->m_aiSpyAssignment[m_pPlayer->GetID()] = uiSpyIndex;1484#if defined(MOD_API_ESPIONAGE)1485		m_aSpyList[uiSpyIndex].SetSpyState(m_pPlayer->GetID(), uiSpyIndex, SPY_STATE_TRAVELLING);1486#else1487		m_aSpyList[uiSpyIndex].m_eSpyState = SPY_STATE_TRAVELLING;1488#endif1489		m_aSpyList[uiSpyIndex].m_bIsDiplomat = bAsDiplomat;1490		int iRate = CalcPerTurn(SPY_STATE_TRAVELLING, pCity, uiSpyIndex);1491		int iGoal = CalcRequired(SPY_STATE_TRAVELLING, pCity, uiSpyIndex);1492		pCityEspionage->SetActivity(m_pPlayer->GetID(), 0, iRate, iGoal);1493	}14941495	if(GC.getLogging())1496	{1497		CvString strMsg;1498		strMsg.Format("Moving spy, %d,", uiSpyIndex);1499#if defined(MOD_BUGFIX_SPY_NAMES)1500		strMsg += GetLocalizedText(m_aSpyList[uiSpyIndex].GetSpyName(m_pPlayer));1501#else1502		strMsg += GetLocalizedText(m_pPlayer->getCivilizationInfo().getSpyNames(m_aSpyList[uiSpyIndex].m_iName));1503#endif1504		strMsg += ",";1505		if(pOldCity)1506		{1507			strMsg += GET_PLAYER(pOldCity->getOwner()).getCivilizationShortDescription();1508			strMsg += ",";1509			strMsg += pOldCity->getName();1510		}1511		else1512		{1513			strMsg += "Unassigned";1514			strMsg += ",";1515		}1516		strMsg += ",";15171518		if(pCity)1519		{1520			strMsg += GET_PLAYER(pCity->getOwner()).getCivilizationShortDescription();1521			strMsg += ",";1522			strMsg += pCity->getName();1523		}1524		else1525		{1526			strMsg += "Unassigned";1527			strMsg += ",";1528		}1529		strMsg += ",";15301531		if (bAsDiplomat)1532		{1533			strMsg += "Diplomat";1534		}1535		strMsg += ",";15361537		LogEspionageMsg(strMsg);1538	}15391540	return true;1541}

Calls

Called by