mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 14:24:43 -04:00
Step 2 - existing uniquetypes
This commit is contained in:
parent
846388f032
commit
213fc67c87
@ -198,9 +198,25 @@ class CityStats(val cityInfo: CityInfo) {
|
|||||||
private fun getStatsFromUniquesBySource():StatMap {
|
private fun getStatsFromUniquesBySource():StatMap {
|
||||||
val sourceToStats = StatMap()
|
val sourceToStats = StatMap()
|
||||||
val cityConditionals = StateForConditionals(cityInfo.civInfo, cityInfo)
|
val cityConditionals = StateForConditionals(cityInfo.civInfo, cityInfo)
|
||||||
for (unique in cityInfo.civInfo.getMatchingUniques(UniqueType.Stats, cityConditionals))
|
fun addUniqueStats(unique:Unique) =
|
||||||
sourceToStats.add(unique.sourceObjectType?.name ?: "", unique.stats)
|
sourceToStats.add(unique.sourceObjectType?.name ?: "", unique.stats)
|
||||||
|
|
||||||
|
for (unique in cityInfo.civInfo.getMatchingUniques(UniqueType.Stats, cityConditionals))
|
||||||
|
addUniqueStats(unique)
|
||||||
|
|
||||||
|
for (unique in cityInfo.civInfo.getMatchingUniques(UniqueType.StatsPerCity, cityConditionals))
|
||||||
|
if (cityInfo.matchesFilter(unique.params[1]))
|
||||||
|
addUniqueStats(unique)
|
||||||
|
|
||||||
|
|
||||||
|
// "[stats] per [amount] population [cityFilter]"
|
||||||
|
for (unique in cityInfo.civInfo.getMatchingUniques(UniqueType.StatsPerPopulation, cityConditionals))
|
||||||
|
if (cityInfo.matchesFilter(unique.params[2])) {
|
||||||
|
val amountOfEffects = (cityInfo.population.population / unique.params[1].toInt()).toFloat()
|
||||||
|
sourceToStats.add(unique.sourceObjectType?.name ?: "", unique.stats.times(amountOfEffects))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun rename(source: String, displayedSource: String) {
|
fun rename(source: String, displayedSource: String) {
|
||||||
if (!sourceToStats.containsKey(source)) return
|
if (!sourceToStats.containsKey(source)) return
|
||||||
sourceToStats.add(displayedSource, sourceToStats[source]!!)
|
sourceToStats.add(displayedSource, sourceToStats[source]!!)
|
||||||
@ -218,19 +234,6 @@ class CityStats(val cityInfo: CityInfo) {
|
|||||||
|
|
||||||
for (unique in uniques.toList()) { // Should help mitigate getConstructionButtonDTOs concurrency problems.
|
for (unique in uniques.toList()) { // Should help mitigate getConstructionButtonDTOs concurrency problems.
|
||||||
|
|
||||||
if (unique.isOfType(UniqueType.StatsPerCity)
|
|
||||||
&& cityInfo.matchesFilter(unique.params[1])
|
|
||||||
&& unique.conditionalsApply(cityInfo.civInfo, cityInfo)
|
|
||||||
) {
|
|
||||||
stats.add(unique.stats)
|
|
||||||
}
|
|
||||||
|
|
||||||
// "[stats] per [amount] population [cityFilter]"
|
|
||||||
if (unique.isOfType(UniqueType.StatsPerPopulation) && cityInfo.matchesFilter(unique.params[2])) {
|
|
||||||
val amountOfEffects = (cityInfo.population.population / unique.params[1].toInt()).toFloat()
|
|
||||||
stats.add(unique.stats.times(amountOfEffects))
|
|
||||||
}
|
|
||||||
|
|
||||||
// "[stats] in cities with [amount] or more population
|
// "[stats] in cities with [amount] or more population
|
||||||
if (unique.placeholderText == "[] in cities with [] or more population" && cityInfo.population.population >= unique.params[1].toInt())
|
if (unique.placeholderText == "[] in cities with [] or more population" && cityInfo.population.population >= unique.params[1].toInt())
|
||||||
stats.add(unique.stats)
|
stats.add(unique.stats)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user