CvPlayerEspionage::CalcRequired(int, CvCity *, int)
- Defined in
- CvEspionageClasses.cpp, line 1818
- Class
- CvPlayerEspionage
- Hook name
CivHooks::CvPlayerEspionage_CalcRequired
Hooks
static bool BeforeCvPlayerEspionage_CalcRequired(CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex, int& result);static void AfterCvPlayerEspionage_CalcRequired(CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex, int& result);static int ReplaceCvPlayerEspionage_CalcRequired(int (*original)(CvPlayerEspionage*, int, CvCity*, int), CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex);CivRegisterBefore<CivHooks::CvPlayerEspionage_CalcRequired>(host, &BeforeCvPlayerEspionage_CalcRequired);CivRegisterAfter<CivHooks::CvPlayerEspionage_CalcRequired>(host, &AfterCvPlayerEspionage_CalcRequired);CivRegisterReplace<CivHooks::CvPlayerEspionage_CalcRequired>(host, &ReplaceCvPlayerEspionage_CalcRequired);
Code
1817/// CalcRequired - How much the spy is needed to do to accomplish this task1818int CvPlayerEspionage::CalcRequired(int iSpyState, CvCity* pCity, int iSpyIndex)1819{1820 DEBUG_VARIABLE(iSpyIndex);1821 CvAssertMsg(pCity, "pCity is null");1822 CvAssertMsg(iSpyIndex >= 0, "iSpyIndex is out of bounds");18231824 switch(iSpyState)1825 {1826 case SPY_STATE_TRAVELLING:1827 {1828 return iSpyTurnsToTravel;1829 }1830 break;1831 case SPY_STATE_SURVEILLANCE:1832 {1833 int iTime = 3;1834 if (pCity)1835 {1836 iTime = m_pPlayer->GetCulture()->GetInfluenceSurveillanceTime(pCity->getOwner());1837 }1838 return iTime;1839 }1840 break;1841 case SPY_STATE_GATHERING_INTEL:1842 {1843 if(pCity)1844 {1845 PlayerTypes ePlayer = pCity->getOwner();1846 CvAssertMsg(!GET_PLAYER(ePlayer).isMinorCiv(), "Can't spy on a minor civ");1847 CvAssertMsg(!GET_PLAYER(ePlayer).isBarbarian(), "Can't spy on barbarians");1848 if(GET_PLAYER(ePlayer).isMinorCiv() || GET_PLAYER(ePlayer).isBarbarian())1849 {1850 return -1;1851 }18521853 CvAssertMsg(m_aiMaxTechCost[ePlayer] >= 0, "m_aiMaxTechCost[ePlayer] is below zero");1854 uint uiMaxTechCostAdjusted = m_aiMaxTechCost[ePlayer]; 1855 uiMaxTechCostAdjusted *= GC.getESPIONAGE_GATHERING_INTEL_COST_PERCENT();1856 uiMaxTechCostAdjusted /= 100;1857 int iMaxTechCostAdjusted = uiMaxTechCostAdjusted;1858 CvAssertMsg(m_aiMaxTechCost[ePlayer] >= 0, "iMaxTechCostAdjusted is below zero. Overflow!");1859 return iMaxTechCostAdjusted;1860 }1861 }1862 break;1863 case SPY_STATE_RIG_ELECTION:1864 {1865 return GC.getGame().GetTurnsUntilMinorCivElection();1866 }1867 break;1868 case SPY_STATE_MAKING_INTRODUCTIONS:1869 {1870 return (iSpyTurnsToMakeIntroductions * GC.getGame().getGameSpeedInfo().getLeaguePercent()) / 100;1871 }1872 break;1873 }18741875 CvAssertMsg(false, "CalcRequired cannot handle that iSpyState");1876 return -1;1877}
Calls
- CvCity::getOwner() const
- CvGame::getGameSpeedInfo() const
- CvGame::GetTurnsUntilMinorCivElection()
- CvGameSpeedInfo::getLeaguePercent() const
- CvGlobals::getESPIONAGE_GATHERING_INTEL_COST_PERCENT()
- CvGlobals::getGame()
- CvPlayer::GetCulture() const
- CvPlayer::isBarbarian() const
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetInfluenceSurveillanceTime(PlayerTypes) const
Firaxis::Array::operator[]