mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-11 18:39:43 +07:00
More UniqueType-ing, discovering an overlap this time
This commit is contained in:
parent
5fc7d1ce46
commit
bd7824cdb9
@ -7,6 +7,7 @@ import com.unciv.logic.civilization.PopupAlert
|
||||
import com.unciv.models.ruleset.Building
|
||||
import com.unciv.models.ruleset.Ruleset
|
||||
import com.unciv.models.ruleset.unique.UniqueMap
|
||||
import com.unciv.models.ruleset.unique.UniqueType
|
||||
import com.unciv.models.ruleset.unit.BaseUnit
|
||||
import com.unciv.models.stats.Stat
|
||||
import com.unciv.models.stats.Stats
|
||||
@ -75,9 +76,6 @@ class CityConstructions {
|
||||
fun getConstructableUnits() = cityInfo.getRuleset().units.values
|
||||
.asSequence().filter { it.isBuildable(this) }
|
||||
|
||||
fun getBasicCultureBuildings() = cityInfo.getRuleset().buildings.values
|
||||
.asSequence().filter { it.culture > 0f && !it.isAnyWonder() && it.replaces == null }
|
||||
|
||||
fun getBasicStatBuildings(stat: Stat) = cityInfo.getRuleset().buildings.values
|
||||
.asSequence()
|
||||
.filter { !it.isAnyWonder() && it.replaces == null && it.getStats(null)[stat] > 0f }
|
||||
@ -164,7 +162,7 @@ class CityConstructions {
|
||||
|
||||
fun addFreeBuildings() {
|
||||
// "Provides a free [buildingName] [cityFilter]"
|
||||
for (unique in cityInfo.getMatchingUniques("Provides a free [] []")) {
|
||||
for (unique in cityInfo.getMatchingUniques(UniqueType.ProvidesFreeBuildings)) {
|
||||
val freeBuildingName = cityInfo.civInfo.getEquivalentBuilding(unique.params[0]).name
|
||||
val citiesThatApply = when (unique.params[1]) {
|
||||
"in this city" -> listOf(cityInfo)
|
||||
|
@ -288,7 +288,7 @@ class CityInfo {
|
||||
if (tileInfo.improvement == null) continue
|
||||
val tileImprovement = tileInfo.getTileImprovement()
|
||||
for (unique in tileImprovement!!.uniqueObjects) {
|
||||
if (unique.placeholderText == "Provides [] []") {
|
||||
if (unique.matches(UniqueType.ProvidesResources, getRuleset())) {
|
||||
val resource = getRuleset().tileResources[unique.params[1]] ?: continue
|
||||
cityResources.add(
|
||||
resource,
|
||||
@ -314,7 +314,7 @@ class CityInfo {
|
||||
}
|
||||
}
|
||||
|
||||
for (unique in getLocalMatchingUniques("Provides [] []")) { // E.G "Provides [1] [Iron]"
|
||||
for (unique in getLocalMatchingUniques(UniqueType.ProvidesResources)) { // E.G "Provides [1] [Iron]"
|
||||
val resource = getRuleset().tileResources[unique.params[1]]
|
||||
if (resource != null) {
|
||||
cityResources.add(
|
||||
|
@ -18,6 +18,7 @@ enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) {
|
||||
StatsPerCity("[stats] [cityFilter]"),
|
||||
|
||||
ConsumesResources("Consumes [amount] [resource]"), // No conditional support as of yet
|
||||
ProvidesResources("Provides [amount] [resource]"),
|
||||
|
||||
FreeUnits("[amount] units cost no maintenance"),
|
||||
UnitMaintenanceDiscount("[amount]% maintenance costs for [mapUnitFilter] units"),
|
||||
@ -27,7 +28,11 @@ enum class UniqueType(val text:String, val replacedBy: UniqueType? = null) {
|
||||
DecreasedUnitMaintenanceCostsGlobally("-[amount]% unit upkeep costs", UnitMaintenanceDiscount), // No conditional support
|
||||
@Deprecated("As of 3.16.16", ReplaceWith("Stats <>"))
|
||||
StatBonusForNumberOfSpecialists("[stats] if this city has at least [amount] specialists"), // No conditional support
|
||||
|
||||
// TODO: Unify these (I'm in favor of "gain a free" above "provides" because it fits more cases)
|
||||
ProvidesFreeBuildings("Provides a free [buildingName] [cityFilter]"),
|
||||
GainFreeBuildings("Gain a free [buildingName] [cityFilter]"),
|
||||
|
||||
|
||||
CityStateStatsPerTurn("Provides [stats] per turn"), // Should not be Happiness!
|
||||
CityStateStatsPerCity("Provides [stats] [cityFilter]"),
|
||||
|
Loading…
Reference in New Issue
Block a user