CvPlayerTraits::WillGetUniqueLuxury(CvArea *) const
- Defined in
- CvTraitClasses.cpp, line 2649
- Class
- CvPlayerTraits
- Hook name
CivHooks::CvPlayerTraits_WillGetUniqueLuxury
Hooks
static bool BeforeCvPlayerTraits_WillGetUniqueLuxury(const CvPlayerTraits* self, CvArea * pArea, bool& result);static void AfterCvPlayerTraits_WillGetUniqueLuxury(const CvPlayerTraits* self, CvArea * pArea, bool& result);static bool ReplaceCvPlayerTraits_WillGetUniqueLuxury(bool (*original)(const CvPlayerTraits*, CvArea *), const CvPlayerTraits* self, CvArea * pArea);CivRegisterBefore<CivHooks::CvPlayerTraits_WillGetUniqueLuxury>(host, &BeforeCvPlayerTraits_WillGetUniqueLuxury);CivRegisterAfter<CivHooks::CvPlayerTraits_WillGetUniqueLuxury>(host, &AfterCvPlayerTraits_WillGetUniqueLuxury);CivRegisterReplace<CivHooks::CvPlayerTraits_WillGetUniqueLuxury>(host, &ReplaceCvPlayerTraits_WillGetUniqueLuxury);
Code
2648/// Will settling a city in this new area unlock a unique luxury?2649bool CvPlayerTraits::WillGetUniqueLuxury(CvArea *pArea) const2650{2651 // Still have more of these cities to award?2652 if (m_iUniqueLuxuryCities > m_iUniqueLuxuryCitiesPlaced)2653 {2654 int iArea = pArea->GetID();26552656 // If we have to be in a new area, check to see if this area is okay2657 if (m_bUniqueLuxuryRequiresNewArea)2658 {2659 // Can't be the capital itself2660 if (m_pPlayer->GetNumCitiesFounded() == 0)2661 {2662 return false;2663 }26642665 CvPlot *pOriginalCapitalPlot = GC.getMap().plot(m_pPlayer->GetOriginalCapitalX(), m_pPlayer->GetOriginalCapitalY());2666 if (pOriginalCapitalPlot)2667 {2668 if (pOriginalCapitalPlot->getArea() == iArea)2669 {2670 return false;2671 }2672 }26732674 // Already in the list?2675 if (std::find (m_aUniqueLuxuryAreas.begin(), m_aUniqueLuxuryAreas.end(), iArea) != m_aUniqueLuxuryAreas.end())2676 {2677 return false;2678 }2679 }26802681 int iNumUniqueResourcesGiven = m_aUniqueLuxuryAreas.size();26822683 // Loop through all resources and see if we can find one more2684 int iNumUniquesFound = 0;2685 for(int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)2686 {2687 ResourceTypes eResource = (ResourceTypes) iResourceLoop;2688 CvResourceInfo* pkResource = GC.getResourceInfo(eResource);2689 if (pkResource != NULL && pkResource->GetRequiredCivilization() == m_pPlayer->getCivilizationType())2690 {2691 iNumUniquesFound++;2692 if (iNumUniquesFound > iNumUniqueResourcesGiven)2693 {2694 return true;2695 }2696 }2697 }2698 }26992700 return false;2701}
Calls
- CvArea::GetID() const
- CvGlobals::getMap()
- CvGlobals::getNumResourceInfos()
- CvGlobals::getResourceInfo(ResourceTypes)
- CvMap::plot(int, int) const
- CvPlayer::getCivilizationType() const
- CvPlayer::GetNumCitiesFounded() const
- CvPlayer::GetOriginalCapitalX() const
- CvPlayer::GetOriginalCapitalY() const
- CvPlot::getArea() const
- CvResourceInfo::GetRequiredCivilization() const
std::_Vector_const_iterator::operator!=std::findstd::vector::beginstd::vector::endstd::vector::size