mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 22:37:02 -04: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.city.IConstruction
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.map.MapUnit
|
import com.unciv.logic.map.MapUnit
|
||||||
|
import com.unciv.models.ruleset.Building
|
||||||
import com.unciv.models.ruleset.Ruleset
|
import com.unciv.models.ruleset.Ruleset
|
||||||
import com.unciv.models.ruleset.Unique
|
import com.unciv.models.ruleset.Unique
|
||||||
import com.unciv.models.translations.Translations
|
import com.unciv.models.translations.Translations
|
||||||
@ -122,9 +123,14 @@ class BaseUnit : INamed, IConstruction {
|
|||||||
fun getRejectionReason(construction: CityConstructions): String {
|
fun getRejectionReason(construction: CityConstructions): String {
|
||||||
if (unitType.isWaterUnit() && !construction.cityInfo.getCenterTile().isCoastalTile())
|
if (unitType.isWaterUnit() && !construction.cityInfo.getCenterTile().isCoastalTile())
|
||||||
return "Can only build water units in coastal cities"
|
return "Can only build water units in coastal cities"
|
||||||
if (uniqueObjects.any { it.placeholderText == "Not displayed as an available construction unless [] is built"
|
for (unique in uniqueObjects.filter { it.placeholderText == "Not displayed as an available construction without []"}) {
|
||||||
&& !construction.containsBuildingOrEquivalent(it.params[0]) })
|
val filter = unique.params[0]
|
||||||
return "Should not be displayed"
|
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)
|
val civRejectionReason = getRejectionReason(construction.cityInfo.civInfo)
|
||||||
if (civRejectionReason != "") return civRejectionReason
|
if (civRejectionReason != "") return civRejectionReason
|
||||||
return ""
|
return ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user