Bazaar developer reference

CvPlot::canHaveResource(ResourceTypes, bool, bool) const

Defined in
CvPlot.cpp, line 2104
Class
CvPlot
Hook name
CivHooks::CvPlot_canHaveResource

Hooks

static bool BeforeCvPlot_canHaveResource(const CvPlot* self, ResourceTypes eResource, bool bIgnoreLatitude, bool bIgnoreCiv, bool& result);static void AfterCvPlot_canHaveResource(const CvPlot* self, ResourceTypes eResource, bool bIgnoreLatitude, bool bIgnoreCiv, bool& result);static bool ReplaceCvPlot_canHaveResource(bool (*original)(const CvPlot*, ResourceTypes, bool, bool), const CvPlot* self, ResourceTypes eResource, bool bIgnoreLatitude, bool bIgnoreCiv);CivRegisterBefore<CivHooks::CvPlot_canHaveResource>(host, &BeforeCvPlot_canHaveResource);CivRegisterAfter<CivHooks::CvPlot_canHaveResource>(host, &AfterCvPlot_canHaveResource);CivRegisterReplace<CivHooks::CvPlot_canHaveResource>(host, &ReplaceCvPlot_canHaveResource);

Code

2103#if defined(MOD_API_EXTENSIONS)2104bool CvPlot::canHaveResource(ResourceTypes eResource, bool bIgnoreLatitude, bool bIgnoreCiv) const2105#else2106bool CvPlot::canHaveResource(ResourceTypes eResource, bool bIgnoreLatitude) const2107#endif2108{2109	CvAssertMsg(getTerrainType() != NO_TERRAIN, "TerrainType is not assigned a valid value");21102111	if(eResource == NO_RESOURCE)2112	{2113		return true;2114	}21152116	if(getResourceType() != NO_RESOURCE)2117	{2118		return false;2119	}21202121	if(isMountain())2122	{2123		return false;2124	}21252126	CvResourceInfo& thisResourceInfo = *GC.getResourceInfo(eResource);2127	if(getFeatureType() != NO_FEATURE)2128	{2129		if(!(thisResourceInfo.isFeature(getFeatureType())))2130		{2131			return false;2132		}21332134		if(!(thisResourceInfo.isFeatureTerrain(getTerrainType())))2135		{2136			return false;2137		}2138	}2139	else2140	{2141		if(!(thisResourceInfo.isTerrain(getTerrainType())))2142		{2143			return false;2144		}2145	}21462147	if(isHills())2148	{2149		if(!(thisResourceInfo.isHills()))2150		{2151			return false;2152		}2153	}2154	else if(isFlatlands())2155	{2156		if(!(thisResourceInfo.isFlatlands()))2157		{2158			return false;2159		}2160	}21612162	if(thisResourceInfo.isNoRiverSide())2163	{2164		if(isRiverSide())2165		{2166			return false;2167		}2168	}21692170	if(thisResourceInfo.getMinAreaSize() != -1)2171	{2172		if(area()->getNumTiles() < thisResourceInfo.getMinAreaSize())2173		{2174			return false;2175		}2176	}21772178#if defined(MOD_API_EXTENSIONS)2179	if(!bIgnoreCiv && thisResourceInfo.isOnlyMinorCivs())2180#else2181	if(thisResourceInfo.isOnlyMinorCivs())2182#endif2183	{2184		return false;2185	}21862187#if defined(MOD_API_EXTENSIONS)2188	if (!bIgnoreCiv && thisResourceInfo.GetRequiredCivilization() != NO_CIVILIZATION)2189#else2190	if (thisResourceInfo.GetRequiredCivilization() != NO_CIVILIZATION)2191#endif2192	{2193		return false;2194	}21952196	if(!bIgnoreLatitude)2197	{2198		if(getLatitude() > thisResourceInfo.getMaxLatitude())2199		{2200			return false;2201		}22022203		if(getLatitude() < thisResourceInfo.getMinLatitude())2204		{2205			return false;2206		}2207	}22082209	if(!isPotentialCityWork())2210	{2211		return false;2212	}22132214	TerrainTypes eShallowWater = (TerrainTypes) GC.getSHALLOW_WATER_TERRAIN();2215	if(getTerrainType() == eShallowWater)2216	{2217		if(!isAdjacentToLand())2218		{2219			return false;2220		}2221	}22222223	return true;2224}

Calls

Called by