From ec760e660faa9c51574935d002c5fb49416487f9 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Fri, 11 May 2018 10:39:54 +0300 Subject: [PATCH] Fixed crash when settler didn't find a good city spot within 5 tiles --- android/build.gradle | 4 ++-- core/src/com/unciv/logic/automation/UnitAutomation.kt | 11 +++++++++-- core/src/com/unciv/ui/worldscreen/CivStatsTable.kt | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index d5bf45657c..e852b1f673 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.game" minSdkVersion 14 targetSdkVersion 26 - versionCode 52 - versionName "2.1.2" + versionCode 54 + versionName "2.1.4" } buildTypes { release { diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index 6703039b78..53b7cac4db 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -133,9 +133,16 @@ class UnitAutomation{ // This is to improve performance - instead of ranking each tile in the area up to 19 times, do it once. val nearbyTileRankings = unit.getTile().getTilesInDistance(7) .associateBy ( {it},{ Automation().rankTile(it,unit.civInfo) }) - val bestCityLocation = unit.getTile().getTilesInDistance(5) + var bestCityLocation = unit.getTile().getTilesInDistance(5) .minus(tilesNearCities) - .maxBy { rankTileAsCityCenter(it, nearbyTileRankings) }!! + .maxBy { rankTileAsCityCenter(it, nearbyTileRankings) } + + if(bestCityLocation==null) { // We got a badass over here, all tiles within 5 are taken? SEARCH EVERYWHERE + bestCityLocation = unit.civInfo.getViewableTiles() + .minus(tilesNearCities) + .maxBy { rankTileAsCityCenter(it, nearbyTileRankings) } + } + bestCityLocation!! if (unit.getTile() == bestCityLocation) UnitActions().getUnitActions(unit, UnCivGame.Current.worldScreen!!).first { it.name == "Found city" }.action() diff --git a/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt b/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt index 32cec71d94..204b716957 100644 --- a/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt @@ -122,7 +122,7 @@ class CivStatsTable(val screen: WorldScreen) : Table() { val turnsToNextPolicy = (civInfo.policies.getCultureNeededForNextPolicy() - civInfo.policies.storedCulture) / nextTurnStats.culture var cultureString = "+" + Math.round(nextTurnStats.culture) - if(turnsToNextPolicy>0) cultureString+= " ("+ ceil(turnsToNextPolicy)+")" + if(turnsToNextPolicy>0) cultureString+= " ("+ ceil(turnsToNextPolicy).toInt()+")" else cultureString += " (!)" cultureLabel.setText(cultureString) }