Bazaar developer reference

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

Called by