CvPlayer::changeUnitClassMaking(UnitClassTypes, int)
- Defined in
- CvPlayer.cpp, line 20494
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_changeUnitClassMaking
Hooks
static bool BeforeCvPlayer_changeUnitClassMaking(CvPlayer* self, UnitClassTypes eIndex, int iChange);static void AfterCvPlayer_changeUnitClassMaking(CvPlayer* self, UnitClassTypes eIndex, int iChange);static void ReplaceCvPlayer_changeUnitClassMaking(void (*original)(CvPlayer*, UnitClassTypes, int), CvPlayer* self, UnitClassTypes eIndex, int iChange);CivRegisterBefore<CivHooks::CvPlayer_changeUnitClassMaking>(host, &BeforeCvPlayer_changeUnitClassMaking);CivRegisterAfter<CivHooks::CvPlayer_changeUnitClassMaking>(host, &AfterCvPlayer_changeUnitClassMaking);CivRegisterReplace<CivHooks::CvPlayer_changeUnitClassMaking>(host, &ReplaceCvPlayer_changeUnitClassMaking);
Code
20494void CvPlayer::changeUnitClassMaking(UnitClassTypes eIndex, int iChange)20495{20496 CvAssertMsg(eIndex >= 0, "eIndex is expected to be non-negative (invalid Index)");20497 CvAssertMsg(eIndex < GC.getNumUnitClassInfos(), "eIndex is expected to be within maximum bounds (invalid Index)");2049820499 if(iChange != 0)20500 {20501 m_paiUnitClassMaking.setAt(eIndex, m_paiUnitClassMaking[eIndex] + iChange);20502 CvAssert(getUnitClassMaking(eIndex) >= 0);2050320504 CvCivilizationInfo& playerCivilizationInfo = getCivilizationInfo();20505 UnitTypes eUnit = static_cast<UnitTypes>(playerCivilizationInfo.getCivilizationUnits(eIndex));20506 CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnit);20507 if(pkUnitInfo)20508 {20509 // Builder Limit20510 if(pkUnitInfo->GetWorkRate() > 0 && pkUnitInfo->GetDomainType() == DOMAIN_LAND)20511 {20512 ChangeNumBuilders(iChange);20513 }2051420515 // Update the amount of a Resource used up by Units in Production20516 for(int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)20517 {20518 ResourceTypes eResource = static_cast<ResourceTypes>(iResourceLoop);20519 CvResourceInfo* pkResource = GC.getResourceInfo(eResource);20520 if(pkResource)20521 {20522 if(pkUnitInfo->GetResourceQuantityRequirement(iResourceLoop) > 0)20523 {20524 changeNumResourceUsed(eResource, iChange * pkUnitInfo->GetResourceQuantityRequirement(iResourceLoop));20525 }20526 }20527 }2052820529 if(GetID() == GC.getGame().getActivePlayer())20530 {20531 GC.GetEngineUserInterface()->setDirty(Help_DIRTY_BIT, true);20532 }20533 }20534 }20535}
Calls
- CvCivilizationInfo::getCivilizationUnits(int) const
- CvGame::getActivePlayer() const
- CvGlobals::GetEngineUserInterface()
- CvGlobals::getGame()
- CvGlobals::getNumResourceInfos()
- CvGlobals::getResourceInfo(ResourceTypes)
- CvGlobals::getUnitInfo(UnitTypes)
- CvPlayer::ChangeNumBuilders(int)
- CvPlayer::changeNumResourceUsed(ResourceTypes, int)
- CvPlayer::getCivilizationInfo() const
- CvPlayer::GetID() const
- CvUnitEntry::GetDomainType() const
- CvUnitEntry::GetResourceQuantityRequirement(int) const
- CvUnitEntry::GetWorkRate() const
FAutoVariable::operator[]FAutoVariable::setAtICvUserInterface1::setDirty