mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-14 12:00:12 +07:00
Hide build menu constructions requiring resources with unique (#3370)
* "Not displayed as an available construction without []" Hides constructions that are missing resources * combined unique check * removed duplicate code * clarified if clause * simplified check and obsoleted existing unique * previous iteration did not work due to OR instead of AND * if we don't check to see if this is actually a resource, we get a crash
This commit is contained in:
parent
2aac9ea314
commit
80688eb4a5
@ -5,6 +5,7 @@ import com.unciv.logic.city.CityConstructions
|
||||
import com.unciv.logic.city.IConstruction
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.MapUnit
|
||||
import com.unciv.models.ruleset.Building
|
||||
import com.unciv.models.ruleset.Ruleset
|
||||
import com.unciv.models.ruleset.Unique
|
||||
import com.unciv.models.translations.Translations
|
||||
@ -122,9 +123,14 @@ class BaseUnit : INamed, IConstruction {
|
||||
fun getRejectionReason(construction: CityConstructions): String {
|
||||
if (unitType.isWaterUnit() && !construction.cityInfo.getCenterTile().isCoastalTile())
|
||||
return "Can only build water units in coastal cities"
|
||||
if (uniqueObjects.any { it.placeholderText == "Not displayed as an available construction unless [] is built"
|
||||
&& !construction.containsBuildingOrEquivalent(it.params[0]) })
|
||||
return "Should not be displayed"
|
||||
for (unique in uniqueObjects.filter { it.placeholderText == "Not displayed as an available construction without []"}) {
|
||||
val filter = unique.params[0]
|
||||
return if (construction.containsBuildingOrEquivalent(filter)
|
||||
|| (construction.cityInfo.civInfo.gameInfo.ruleSet.tileResources.containsKey(filter)
|
||||
&& construction.cityInfo.civInfo.hasResource(filter)))
|
||||
""
|
||||
else "Should not be displayed"
|
||||
}
|
||||
val civRejectionReason = getRejectionReason(construction.cityInfo.civInfo)
|
||||
if (civRejectionReason != "") return civRejectionReason
|
||||
return ""
|
||||
|
Loading…
Reference in New Issue
Block a user