Check terrain requirements for buildings first

If a city isn't next to a mountain, it shouldn't show Observatory with
"Needs a Library".
This commit is contained in:
Brian Gainor
2019-05-17 13:24:52 -04:00
committed by Yair Morgenstern
parent cd77074045
commit 081ed9dc4a

View File

@ -196,6 +196,18 @@ class Building : NamedStats(), IConstruction{
fun getRejectionReason(construction: CityConstructions):String{
if (construction.isBuilt(name)) return "Already built"
if ("Must be next to desert" in uniques
&& !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" })
return "Must be next to desert"
if ("Must be next to mountain" in uniques
&& !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Mountain" })
return "Must be next to mountain"
if("Can only be built in coastal cities" in uniques
&& construction.cityInfo.getCenterTile().neighbors.none { it.baseTerrain=="Coast" })
return "Can only be built in coastal cities"
val civInfo = construction.cityInfo.civInfo
if (uniqueTo!=null && uniqueTo!=civInfo.civName) return "Unique to $uniqueTo"
if (GameBasics.Buildings.values.any { it.uniqueTo==civInfo.civName && it.replaces==name }) return "Our unique building replaces this"
@ -233,18 +245,6 @@ class Building : NamedStats(), IConstruction{
if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!))
return "Cannot be built with $cannotBeBuiltWith"
if ("Must be next to desert" in uniques
&& !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" })
return "Must be next to desert"
if ("Must be next to mountain" in uniques
&& !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Mountain" })
return "Must be next to mountain"
if("Can only be built in coastal cities" in uniques
&& construction.cityInfo.getCenterTile().neighbors.none { it.baseTerrain=="Coast" })
return "Can only be built in coastal cities"
if (requiredResource != null && !civInfo.hasResource(requiredResource!!))
return "Requires [$requiredResource]"