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
BaseVector::operator[]BaseVector::size- CvCity::GetCityEspionage() const
- CvGame::GetTurnsUntilMinorCivElection()
- CvGlobals::getGame()
- CvPlayer::GetID() const
- CvPlayerEspionage::GetCityWithSpy(uint)
Firaxis::Array::operator[]