CvPlayer::UpdateResourcesSiphoned()
- Defined in
- CvPlayer.cpp, line 19996
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_UpdateResourcesSiphoned
Hooks
static bool BeforeCvPlayer_UpdateResourcesSiphoned(CvPlayer* self);static void AfterCvPlayer_UpdateResourcesSiphoned(CvPlayer* self);static void ReplaceCvPlayer_UpdateResourcesSiphoned(void (*original)(CvPlayer*), CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &BeforeCvPlayer_UpdateResourcesSiphoned);CivRegisterAfter<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &AfterCvPlayer_UpdateResourcesSiphoned);CivRegisterReplace<CivHooks::CvPlayer_UpdateResourcesSiphoned>(host, &ReplaceCvPlayer_UpdateResourcesSiphoned);
Code
19994/// Count up the number of resources we have been siphoning from others and compare it to how many 19995/// we are now allowed to siphon. Change our resource count if there is a discrepancy.19996void CvPlayer::UpdateResourcesSiphoned()19997{19998 FStaticVector<int, 64, true, c_eCiv5GameplayDLL> vDeltas;19999 20000 // Subtract all currently siphoned resources20001 for (int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20002 {20003 ResourceTypes eResourceLoop = (ResourceTypes) iResourceLoop;20004 vDeltas.push_back(-1 * getResourceSiphoned(eResourceLoop));20005 }2000620007 // Add back in valid siphoned resources20008 for (int iPlayerLoop = 0; iPlayerLoop < MAX_PLAYERS; iPlayerLoop++)20009 {20010 PlayerTypes ePlayerLoop = (PlayerTypes) iPlayerLoop;20011 int iSiphonLuxuryCount = getSiphonLuxuryCount(ePlayerLoop);20012 if (iSiphonLuxuryCount > 0)20013 {20014 for (int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20015 {20016 ResourceTypes eResourceLoop = (ResourceTypes) iResourceLoop;20017 CvResourceInfo* pInfo = GC.getResourceInfo(eResourceLoop);20018 // Is it a luxury?20019 if (pInfo && pInfo->getResourceUsage() == RESOURCEUSAGE_LUXURY)20020 {20021 // Do they have at least one of this type, even if it was exported?20022 if (GET_PLAYER(ePlayerLoop).getNumResourceTotal(eResourceLoop, /*bIncludeImport*/ false) > 0 || GET_PLAYER(ePlayerLoop).getResourceExport(eResourceLoop) > 0)20023 {20024 vDeltas[eResourceLoop] += iSiphonLuxuryCount;20025 }20026 }20027 }20028 }20029 }2003020031 // Propagate any actual changes20032 for (uint i = 0; i < vDeltas.size(); i++)20033 {20034 if (vDeltas[i] != 0)20035 {20036 ResourceTypes eResource = (ResourceTypes) i;20037 changeResourceSiphoned(eResource, vDeltas[i]);20038 }20039 }20040}
Calls
BaseVector::operator[]BaseVector::size- CvGlobals::getNumResourceInfos()
- CvGlobals::getResourceInfo(ResourceTypes)
- CvPlayer::changeResourceSiphoned(ResourceTypes, int)
- CvPlayer::getNumResourceTotal(ResourceTypes, bool) const
- CvPlayer::getResourceExport(ResourceTypes) const
- CvPlayer::getResourceSiphoned(ResourceTypes) const
- CvPlayer::getSiphonLuxuryCount(PlayerTypes) const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvResourceInfo::getResourceUsage() const
FStaticVector::FStaticVectorFStaticVector::push_back