Bazaar developer reference

CvPlayerEspionage::GetTurnsUntilStateComplete(uint)

Defined in
CvEspionageClasses.cpp, line 2450
Class
CvPlayerEspionage
Hook name
CivHooks::CvPlayerEspionage_GetTurnsUntilStateComplete

Hooks

static bool BeforeCvPlayerEspionage_GetTurnsUntilStateComplete(CvPlayerEspionage* self, uint uiSpyIndex, int& result);static void AfterCvPlayerEspionage_GetTurnsUntilStateComplete(CvPlayerEspionage* self, uint uiSpyIndex, int& result);static int ReplaceCvPlayerEspionage_GetTurnsUntilStateComplete(int (*original)(CvPlayerEspionage*, uint), CvPlayerEspionage* self, uint uiSpyIndex);CivRegisterBefore<CivHooks::CvPlayerEspionage_GetTurnsUntilStateComplete>(host, &BeforeCvPlayerEspionage_GetTurnsUntilStateComplete);CivRegisterAfter<CivHooks::CvPlayerEspionage_GetTurnsUntilStateComplete>(host, &AfterCvPlayerEspionage_GetTurnsUntilStateComplete);CivRegisterReplace<CivHooks::CvPlayerEspionage_GetTurnsUntilStateComplete>(host, &ReplaceCvPlayerEspionage_GetTurnsUntilStateComplete);

Code

2449/// GetTurnsUntilStateComplete - How many turns until this spy's current state is resolved?2450int CvPlayerEspionage::GetTurnsUntilStateComplete(uint uiSpyIndex)2451{2452	CvAssertMsg(uiSpyIndex < m_aSpyList.size(), "iSpyIndex is out of bounds");2453	if(uiSpyIndex >= m_aSpyList.size())2454	{2455		return -2;2456	}24572458	PlayerTypes ePlayer = m_pPlayer->GetID();2459	CvCity* pCity;2460	CvCityEspionage* pCityEspionage;2461	int iAmountLeft = 0;2462	int iTurnsLeft = 0;24632464	switch(m_aSpyList[uiSpyIndex].m_eSpyState)2465	{2466	case SPY_STATE_UNASSIGNED:2467		// no end time2468		return -1;2469		break;2470	case SPY_STATE_TRAVELLING:2471	case SPY_STATE_SURVEILLANCE:2472	case SPY_STATE_GATHERING_INTEL:2473	case SPY_STATE_MAKING_INTRODUCTIONS:2474		pCity = GetCityWithSpy(uiSpyIndex);2475		CvAssertMsg(pCity, "GetCityWithSpy returned null. Has the wrong task");2476		if(!pCity)2477		{2478			return -1;2479		}2480		pCityEspionage = pCity->GetCityEspionage();2481		iAmountLeft = pCityEspionage->m_aiGoal[ePlayer] - pCityEspionage->m_aiAmount[ePlayer];2482		if(pCityEspionage->m_aiRate[ePlayer] != 0)2483		{2484			iTurnsLeft = iAmountLeft / pCityEspionage->m_aiRate[ePlayer];2485			if(iAmountLeft % pCityEspionage->m_aiRate[ePlayer] > 0)2486			{2487				iTurnsLeft++;2488			}2489		}2490		return iTurnsLeft;2491	case SPY_STATE_RIG_ELECTION:2492		return GC.getGame().GetTurnsUntilMinorCivElection();2493		break;2494	case SPY_STATE_COUNTER_INTEL:2495	case SPY_STATE_SCHMOOZE:2496		// no end time2497		return -1;2498		break;2499	case SPY_STATE_DEAD:2500		// no end time2501		return -1;2502		break;2503#if defined(MOD_API_ESPIONAGE)2504	case SPY_STATE_TERMINATED:2505		// no end time2506		return -1;2507		break;2508#endif2509	}25102511	return -1;2512}

Calls

Called by