Resolved #5520 - no tech icon errors from techs with era errors

This commit is contained in:
yairm210 2021-10-19 20:26:45 +03:00
parent 4efc8b3195
commit 61b6e40cdc
3 changed files with 14 additions and 5 deletions

View File

@ -27,10 +27,10 @@ interface INonPerpetualConstruction : IConstruction, INamed, IHasUniques {
fun canBePurchasedWithStat(cityInfo: CityInfo?, stat: Stat): Boolean { fun canBePurchasedWithStat(cityInfo: CityInfo?, stat: Stat): Boolean {
if (stat in listOf(Stat.Production, Stat.Happiness)) return false if (stat in listOf(Stat.Production, Stat.Happiness)) return false
if ("Cannot be purchased" in uniques) return false if (hasUnique(UniqueType.CannotBePurchased)) return false
if (stat == Stat.Gold) return !hasUnique(UniqueType.Unbuildable) if (stat == Stat.Gold) return !hasUnique(UniqueType.Unbuildable)
// Can be purchased with [Stat] [cityFilter] // Can be purchased with [Stat] [cityFilter]
if (getMatchingUniques("Can be purchased with [] []") if (getMatchingUniques(UniqueType.CanBePurchasedWithStat)
.any { it.params[0] == stat.name && (cityInfo != null && cityInfo.matchesFilter(it.params[1])) } .any { it.params[0] == stat.name && (cityInfo != null && cityInfo.matchesFilter(it.params[1])) }
) return true ) return true
// Can be purchased for [amount] [Stat] [cityFilter] // Can be purchased for [amount] [Stat] [cityFilter]
@ -65,7 +65,7 @@ interface INonPerpetualConstruction : IConstruction, INamed, IHasUniques {
if (lowestCostUnique != null) return lowestCostUnique.params[0].toInt() if (lowestCostUnique != null) return lowestCostUnique.params[0].toInt()
// Can be purchased with [Stat] [cityFilter] // Can be purchased with [Stat] [cityFilter]
if (getMatchingUniques("Can be purchased with [] []") if (getMatchingUniques(UniqueType.CanBePurchasedWithStat)
.any { it.params[0] == stat.name && cityInfo.matchesFilter(it.params[1])} .any { it.params[0] == stat.name && cityInfo.matchesFilter(it.params[1])}
) return cityInfo.civInfo.getEra().baseUnitBuyCost ) return cityInfo.civInfo.getEra().baseUnitBuyCost
return null return null

View File

@ -138,9 +138,17 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
MayanGainGreatPerson("Receive a free Great Person at the end of every [comment] (every 394 years), after researching [tech]. Each bonus person can only be chosen once.", UniqueTarget.Nation), MayanGainGreatPerson("Receive a free Great Person at the end of every [comment] (every 394 years), after researching [tech]. Each bonus person can only be chosen once.", UniqueTarget.Nation),
MayanCalendarDisplay("Once The Long Count activates, the year on the world screen displays as the traditional Mayan Long Count.", UniqueTarget.Nation), MayanCalendarDisplay("Once The Long Count activates, the year on the world screen displays as the traditional Mayan Long Count.", UniqueTarget.Nation),
///////////////////////////////////////// BUILDING UNIQUES /////////////////////////////////////////
///////////////////////////////////////// CONSTRUCTION UNIQUES /////////////////////////////////////////
Unbuildable("Unbuildable", UniqueTarget.Building, UniqueTarget.Unit), Unbuildable("Unbuildable", UniqueTarget.Building, UniqueTarget.Unit),
CannotBePurchased("Cannot be purchased", UniqueTarget.Building, UniqueTarget.Unit),
CanBePurchasedWithStat("Can be purchased with [stat] [cityFilter]", UniqueTarget.Building, UniqueTarget.Unit),
///////////////////////////////////////// BUILDING UNIQUES /////////////////////////////////////////
CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building), CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building),
CannotBeBuiltWith("Cannot be built with [buildingName]", UniqueTarget.Building), CannotBeBuiltWith("Cannot be built with [buildingName]", UniqueTarget.Building),
RequiresAnotherBuilding("Requires a [buildingName] in this city", UniqueTarget.Building), RequiresAnotherBuilding("Requires a [buildingName] in this city", UniqueTarget.Building),

View File

@ -355,7 +355,8 @@ object ImageGetter {
fun getTechIconGroup(techName: String, circleSize: Float) = getTechIcon(techName).surroundWithCircle(circleSize) fun getTechIconGroup(techName: String, circleSize: Float) = getTechIcon(techName).surroundWithCircle(circleSize)
fun getTechIcon(techName: String): Image { fun getTechIcon(techName: String): Image {
val techIconColor = ruleset.eras[ruleset.technologies[techName]!!.era()]!!.getColor() val techIconColor = ruleset.eras[ruleset.technologies[techName]?.era()]?.getColor()
?: return getWhiteDot()
return getImage("TechIcons/$techName").apply { color = techIconColor.lerp(Color.BLACK, 0.6f) } return getImage("TechIcons/$techName").apply { color = techIconColor.lerp(Color.BLACK, 0.6f) }
} }