chore: Simplified validateInProgressConstructions

This commit is contained in:
yairm210 2025-01-19 21:44:07 +02:00
parent 678df502f9
commit 159f2e54d4

View File

@ -402,30 +402,30 @@ class CityConstructions : IsPartOfGameInfoSerialization {
val rejectionReasons =
(construction as INonPerpetualConstruction).getRejectionReasons(this)
if (rejectionReasons.any { it.hasAReasonToBeRemovedFromQueue() }) {
val workDone = getWorkDone(constructionName)
if (construction is Building) {
// Production put into wonders gets refunded
if (construction.isWonder && workDone != 0) {
city.civ.addGold(workDone)
city.civ.addNotification(
"Excess production for [$constructionName] converted to [$workDone] gold",
city.location,
NotificationCategory.Production,
NotificationIcon.Gold, "BuildingIcons/${constructionName}")
}
} else if (construction is BaseUnit) {
// Production put into upgradable units gets put into upgraded version
val cheapestUpgradeUnit = construction.getRulesetUpgradeUnits(city.state)
.map { city.civ.getEquivalentUnit(it) }
.filter { it.isBuildable(this) }
.minByOrNull { it.cost }
if (rejectionReasons.all { it.type == RejectionReasonType.Obsoleted } && cheapestUpgradeUnit != null) {
inProgressConstructions[cheapestUpgradeUnit.name] = (inProgressConstructions[cheapestUpgradeUnit.name] ?: 0) + workDone
}
if (!rejectionReasons.any { it.hasAReasonToBeRemovedFromQueue() }) continue
val workDone = getWorkDone(constructionName)
if (construction is Building) {
// Production put into wonders gets refunded
if (construction.isWonder && workDone != 0) {
city.civ.addGold(workDone)
city.civ.addNotification(
"Excess production for [$constructionName] converted to [$workDone] gold",
city.location,
NotificationCategory.Production,
NotificationIcon.Gold, "BuildingIcons/${constructionName}")
}
} else if (construction is BaseUnit) {
// Production put into upgradable units gets put into upgraded version
val cheapestUpgradeUnit = construction.getRulesetUpgradeUnits(city.state)
.map { city.civ.getEquivalentUnit(it) }
.filter { it.isBuildable(this) }
.minByOrNull { it.cost }
if (rejectionReasons.all { it.type == RejectionReasonType.Obsoleted } && cheapestUpgradeUnit != null) {
inProgressConstructions[cheapestUpgradeUnit.name] = (inProgressConstructions[cheapestUpgradeUnit.name] ?: 0) + workDone
}
inProgressConstructions.remove(constructionName)
}
inProgressConstructions.remove(constructionName)
}
}