From 064ba90990023475c287bc51fe491b14590fec76 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Fri, 8 Aug 2025 10:21:47 +0300 Subject: [PATCH] chore(purity): minor --- .../unciv/logic/automation/civilization/NextTurnAutomation.kt | 4 +++- core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt index 1cee2a371f..a789b5b942 100644 --- a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt @@ -26,6 +26,7 @@ import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.stats.Stat import com.unciv.ui.screens.victoryscreen.RankingType import com.unciv.utils.randomWeighted +import yairm210.purity.annotations.Readonly import kotlin.random.Random object NextTurnAutomation { @@ -582,13 +583,14 @@ object NextTurnAutomation { diplomacyManager.removeFlag(demand.violationOccurred) } - + @Readonly fun getMinDistanceBetweenCities(civ1: Civilization, civ2: Civilization): Int { return getClosestCities(civ1, civ2)?.aerialDistance ?: Int.MAX_VALUE } data class CityDistance(val city1: City, val city2: City, val aerialDistance: Int) + @Readonly fun getClosestCities(civ1: Civilization, civ2: Civilization): CityDistance? { if (civ1.cities.isEmpty() || civ2.cities.isEmpty()) return null diff --git a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt index dd8b6ce495..fb03366f13 100644 --- a/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/WorkerAutomation.kt @@ -25,6 +25,7 @@ import com.unciv.models.stats.Stats import com.unciv.ui.screens.worldscreen.unit.actions.UnitActions import com.unciv.ui.screens.worldscreen.unit.actions.UnitActionsFromUniques import com.unciv.utils.debug +import yairm210.purity.annotations.Readonly import kotlin.math.abs /** @@ -679,6 +680,7 @@ class WorkerAutomation( * Can return `true` if there is an improvement that does not match the resource (for future modding abilities). * Does not check tile ownership - caller [automateWorkBoats] already did, other callers need to ensure this explicitly. */ + @Readonly fun hasWorkableSeaResource(tile: Tile, civInfo: Civilization) = when { !tile.isWater -> false tile.resource == null -> false @@ -695,6 +697,7 @@ class WorkerAutomation( * Only tests resource type and city range, not any improvement requirements. * @throws NullPointerException on tiles without a resource */ + @Readonly fun isNotBonusResourceOrWorkable(tile: Tile, civInfo: Civilization): Boolean = tile.tileResource.resourceType != ResourceType.Bonus // Improve Oil even if no City reaps the yields || civInfo.cities.any { it.tilesInRange.contains(tile) } // Improve Fish only if any of our Cities reaps the yields