diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 453217d3e7..ab1d95ab70 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -574,6 +574,7 @@ The city will not produce anything. = Worked by [cityName] = Lock = Unlock = +Move to city = # Technology UI diff --git a/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt b/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt index c71b8f9491..4079b2fa9a 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreenTileTable.kt @@ -10,10 +10,11 @@ import com.unciv.models.translations.tr import com.unciv.ui.utils.* import kotlin.math.roundToInt -class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ +class CityScreenTileTable(private val cityScreen: CityScreen): Table() { private val innerTable = Table() val city = cityScreen.city - init{ + + init { innerTable.background = ImageGetter.getBackground(ImageGetter.getBlue().lerp(Color.BLACK, 0.5f)) add(innerTable).pad(2f).fill() background = ImageGetter.getBackground(Color.WHITE) @@ -21,11 +22,11 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ fun update(selectedTile: TileInfo?) { innerTable.clear() - if (selectedTile == null){ - isVisible=false + if (selectedTile == null) { + isVisible = false return } - isVisible=true + isVisible = true innerTable.clearChildren() val stats = selectedTile.getTileStats(city, city.civInfo) @@ -35,8 +36,8 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ innerTable.row() innerTable.add(getTileStatsTable(stats)).row() - if(selectedTile.getOwner()==null && selectedTile.neighbors.any {it.getCity()==city} - && selectedTile in city.tilesInRange){ + if (selectedTile.getOwner() == null && selectedTile.neighbors.any { it.getCity() == city } + && selectedTile in city.tilesInRange) { val goldCostOfTile = city.expansion.getGoldCostOfTile(selectedTile) val buyTileButton = "Buy for [$goldCostOfTile] gold".toTextButton() @@ -45,7 +46,7 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ "Would you like to purchase [Tile] for [$goldCostOfTile] gold?".tr() YesNoPopup(purchasePrompt, { city.expansion.buyTile(selectedTile);UncivGame.Current.setScreen(CityScreen(city)) }, cityScreen).open() } - if((goldCostOfTile>city.civInfo.gold && !city.civInfo.gameInfo.gameParameters.godMode) + if (goldCostOfTile > city.civInfo.gold && !city.civInfo.gameInfo.gameParameters.godMode || city.isPuppet || !cityScreen.canChangeState) buyTileButton.disable() @@ -53,13 +54,11 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ innerTable.add(buyTileButton).row() } - if(city.civInfo.cities.filterNot { it==city } - .any { it.isWorked(selectedTile) }) { + if (city.civInfo.cities.filterNot { it == city }.any { it.isWorked(selectedTile) }) innerTable.add("Worked by [${selectedTile.getWorkingCity()!!.name}]".toLabel()).row() - } - if(city.isWorked(selectedTile)){ - if(selectedTile.isLocked()) { + if (city.isWorked(selectedTile)) { + if (selectedTile.isLocked()) { val unlockButton = "Unlock".toTextButton() unlockButton.onClick { city.lockedTiles.remove(selectedTile.position) @@ -68,8 +67,7 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ } if (!cityScreen.canChangeState) unlockButton.disable() innerTable.add(unlockButton).row() - } - else { + } else { val lockButton = "Lock".toTextButton() lockButton.onClick { city.lockedTiles.add(selectedTile.position) @@ -80,6 +78,9 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){ innerTable.add(lockButton).row() } } + if (selectedTile.isCityCenter() && selectedTile.getCity() != city && selectedTile.getCity()!!.civInfo == city.civInfo) + innerTable.add("Move to city".toTextButton().onClick { cityScreen.game.setScreen(CityScreen(selectedTile.getCity()!!)) }) + innerTable.pack() pack() }