mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
Fixed building maintenance unique
This commit is contained in:
parent
5b5495397f
commit
89f6b6fe8b
@ -30,6 +30,7 @@ import com.unciv.models.ruleset.unit.BaseUnit
|
|||||||
import com.unciv.models.stats.Stat
|
import com.unciv.models.stats.Stat
|
||||||
import com.unciv.models.stats.Stats
|
import com.unciv.models.stats.Stats
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
|
import com.unciv.ui.components.extensions.toPercent
|
||||||
import com.unciv.ui.components.fonts.Fonts
|
import com.unciv.ui.components.fonts.Fonts
|
||||||
import com.unciv.ui.screens.civilopediascreen.CivilopediaCategories
|
import com.unciv.ui.screens.civilopediascreen.CivilopediaCategories
|
||||||
import com.unciv.ui.screens.civilopediascreen.FormattedLine
|
import com.unciv.ui.screens.civilopediascreen.FormattedLine
|
||||||
@ -118,13 +119,26 @@ class CityConstructions : IsPartOfGameInfoSerialization {
|
|||||||
/**
|
/**
|
||||||
* @return Maintenance cost of all built buildings
|
* @return Maintenance cost of all built buildings
|
||||||
*/
|
*/
|
||||||
fun getMaintenanceCosts(): Int {
|
fun getMaintenanceCosts(): Float {
|
||||||
var maintenanceCost = 0
|
var maintenanceCost = 0f
|
||||||
val freeBuildings = city.civ.civConstructions.getFreeBuildingNames(city)
|
val freeBuildings = city.civ.civConstructions.getFreeBuildingNames(city)
|
||||||
|
|
||||||
for (building in getBuiltBuildings())
|
val buildingMaintenanceUniques = city.getMatchingUniques(UniqueType.BuildingMaintenance)
|
||||||
if (building.name !in freeBuildings)
|
.filter { city.matchesFilter(it.params[2]) }.toList()
|
||||||
maintenanceCost += building.maintenance
|
|
||||||
|
for (building in getBuiltBuildings().filterNot { it.name in freeBuildings }) {
|
||||||
|
var maintenanceForThisBuilding = building.maintenance.toFloat()
|
||||||
|
for (unique in buildingMaintenanceUniques)
|
||||||
|
if (building.matchesFilter(unique.params[1]))
|
||||||
|
maintenanceForThisBuilding *= unique.params[0].toPercent()
|
||||||
|
|
||||||
|
maintenanceCost += maintenanceForThisBuilding
|
||||||
|
}
|
||||||
|
|
||||||
|
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenanceOld)) {
|
||||||
|
maintenanceCost = (maintenanceCost * unique.params[0].toPercent())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return maintenanceCost
|
return maintenanceCost
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import com.unciv.models.stats.Stats
|
|||||||
import com.unciv.ui.components.extensions.toPercent
|
import com.unciv.ui.components.extensions.toPercent
|
||||||
import com.unciv.utils.DebugUtils
|
import com.unciv.utils.DebugUtils
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
|
|
||||||
class StatTreeNode {
|
class StatTreeNode {
|
||||||
@ -331,23 +330,11 @@ class CityStats(val city: City) {
|
|||||||
|
|
||||||
private fun getBuildingMaintenanceCosts(): Float {
|
private fun getBuildingMaintenanceCosts(): Float {
|
||||||
// Same here - will have a different UI display.
|
// Same here - will have a different UI display.
|
||||||
var buildingsMaintenance = city.cityConstructions.getMaintenanceCosts().toFloat() // this is AFTER the bonus calculation!
|
var buildingsMaintenance = city.cityConstructions.getMaintenanceCosts() // this is AFTER the bonus calculation!
|
||||||
if (!city.civ.isHuman()) {
|
if (!city.civ.isHuman()) {
|
||||||
buildingsMaintenance *= city.civ.gameInfo.getDifficulty().aiBuildingMaintenanceModifier
|
buildingsMaintenance *= city.civ.gameInfo.getDifficulty().aiBuildingMaintenanceModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenanceOld)) {
|
|
||||||
buildingsMaintenance *= unique.params[0].toPercent()
|
|
||||||
}
|
|
||||||
|
|
||||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenance)) {
|
|
||||||
city.cityConstructions.getBuiltBuildings().filter {
|
|
||||||
it.matchesFilter(unique.params[1])
|
|
||||||
}.forEach {
|
|
||||||
it.maintenance = (it.maintenance * unique.params[0].toPercent()).roundToInt()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return buildingsMaintenance
|
return buildingsMaintenance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user