From 3f44e1c519c5cb2d72f65543d2696c7fa17b5a5b Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 23 Jul 2020 14:17:41 +0300 Subject: [PATCH] Resolved #2864 - Locks on tiles are removed when the tile is no longer under your control --- core/src/com/unciv/logic/GameSaver.kt | 10 +++++----- core/src/com/unciv/logic/city/CityExpansionManager.kt | 11 +++++++++-- core/src/com/unciv/logic/city/PopulationManager.kt | 6 +----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/core/src/com/unciv/logic/GameSaver.kt b/core/src/com/unciv/logic/GameSaver.kt index ef2359295d..60d13d25e0 100644 --- a/core/src/com/unciv/logic/GameSaver.kt +++ b/core/src/com/unciv/logic/GameSaver.kt @@ -25,16 +25,16 @@ object GameSaver { fun getSave(GameName: String, multiplayer: Boolean = false): FileHandle { val localfile = Gdx.files.local("${getSubfolder(multiplayer)}/$GameName") - if(externalFilesDirForAndroid=="" || !Gdx.files.isExternalStorageAvailable) return localfile - val externalFile = Gdx.files.absolute(externalFilesDirForAndroid+"/${getSubfolder(multiplayer)}/$GameName") - if(localfile.exists() && !externalFile.exists()) return localfile + if (externalFilesDirForAndroid == "" || !Gdx.files.isExternalStorageAvailable) return localfile + val externalFile = Gdx.files.absolute(externalFilesDirForAndroid + "/${getSubfolder(multiplayer)}/$GameName") + if (localfile.exists() && !externalFile.exists()) return localfile return externalFile } fun getSaves(multiplayer: Boolean = false): List { val localSaves = Gdx.files.local(getSubfolder(multiplayer)).list().map { it.name() } - if(externalFilesDirForAndroid=="" || !Gdx.files.isExternalStorageAvailable) return localSaves - return localSaves + Gdx.files.absolute(externalFilesDirForAndroid+"/${getSubfolder(multiplayer)}").list().map { it.name() } + if (externalFilesDirForAndroid == "" || !Gdx.files.isExternalStorageAvailable) return localSaves + return localSaves + Gdx.files.absolute(externalFilesDirForAndroid + "/${getSubfolder(multiplayer)}").list().map { it.name() } } fun saveGame(game: GameInfo, GameName: String, multiplayer: Boolean = false) { diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index 891e75fc06..57db73ca6d 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -108,8 +108,15 @@ class CityExpansionManager { fun relinquishOwnership(tileInfo: TileInfo) { cityInfo.tiles = cityInfo.tiles.withoutItem(tileInfo.position) - if (cityInfo.workedTiles.contains(tileInfo.position)) - cityInfo.workedTiles = cityInfo.workedTiles.withoutItem(tileInfo.position) + for (city in cityInfo.civInfo.cities) { + if (city.workedTiles.contains(tileInfo.position)) { + city.workedTiles = city.workedTiles.withoutItem(tileInfo.position) + city.population.autoAssignPopulation() + } + if (city.lockedTiles.contains(tileInfo.position)) + city.lockedTiles.remove(tileInfo.position) + } + tileInfo.owningCity = null cityInfo.civInfo.updateDetailedCivResources() diff --git a/core/src/com/unciv/logic/city/PopulationManager.kt b/core/src/com/unciv/logic/city/PopulationManager.kt index c838993568..b5ac6d680a 100644 --- a/core/src/com/unciv/logic/city/PopulationManager.kt +++ b/core/src/com/unciv/logic/city/PopulationManager.kt @@ -101,11 +101,7 @@ class PopulationManager { if (valueBestTile > valueBestSpecialist) { if (bestTile != null) cityInfo.workedTiles = cityInfo.workedTiles.withItem(bestTile.position) - } else { - if (bestJob != null) { - specialists.add(bestJob, 1f) - } - } + } else if (bestJob != null) specialists.add(bestJob, 1f) } fun unassignExtraPopulation() {