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
- CvArea::getNumTiles() const
- CvGlobals::getResourceInfo(ResourceTypes)
- CvGlobals::getSHALLOW_WATER_TERRAIN()
- CvPlot::area() const
- CvPlot::getFeatureType() const
- CvPlot::getLatitude() const
- CvPlot::getResourceType(TeamTypes) const
- CvPlot::getTerrainType() const
- CvPlot::isAdjacentToLand() const
- CvPlot::isFlatlands() const
- CvPlot::isHills() const
- CvPlot::isMountain() const
- CvPlot::isPotentialCityWork() const
- CvPlot::isRiverSide() const
- CvResourceInfo::getMaxLatitude() const
- CvResourceInfo::getMinAreaSize() const
- CvResourceInfo::getMinLatitude() const
- CvResourceInfo::GetRequiredCivilization() const
- CvResourceInfo::isFeature(int) const
- CvResourceInfo::isFeatureTerrain(int) const
- CvResourceInfo::isFlatlands() const
- CvResourceInfo::isHills() const
- CvResourceInfo::isNoRiverSide() const
- CvResourceInfo::isOnlyMinorCivs() const
- CvResourceInfo::isTerrain(int) const