mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-11 11:28:03 +07:00
Resolved #3422 - added fast switch between adjacent cities in city screen
This commit is contained in:
parent
eda8b84c2d
commit
9b6dd71d22
@ -574,6 +574,7 @@ The city will not produce anything. =
|
|||||||
Worked by [cityName] =
|
Worked by [cityName] =
|
||||||
Lock =
|
Lock =
|
||||||
Unlock =
|
Unlock =
|
||||||
|
Move to city =
|
||||||
|
|
||||||
# Technology UI
|
# Technology UI
|
||||||
|
|
||||||
|
@ -10,10 +10,11 @@ import com.unciv.models.translations.tr
|
|||||||
import com.unciv.ui.utils.*
|
import com.unciv.ui.utils.*
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
class CityScreenTileTable(private val cityScreen: CityScreen): Table() {
|
||||||
private val innerTable = Table()
|
private val innerTable = Table()
|
||||||
val city = cityScreen.city
|
val city = cityScreen.city
|
||||||
init{
|
|
||||||
|
init {
|
||||||
innerTable.background = ImageGetter.getBackground(ImageGetter.getBlue().lerp(Color.BLACK, 0.5f))
|
innerTable.background = ImageGetter.getBackground(ImageGetter.getBlue().lerp(Color.BLACK, 0.5f))
|
||||||
add(innerTable).pad(2f).fill()
|
add(innerTable).pad(2f).fill()
|
||||||
background = ImageGetter.getBackground(Color.WHITE)
|
background = ImageGetter.getBackground(Color.WHITE)
|
||||||
@ -21,11 +22,11 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
|||||||
|
|
||||||
fun update(selectedTile: TileInfo?) {
|
fun update(selectedTile: TileInfo?) {
|
||||||
innerTable.clear()
|
innerTable.clear()
|
||||||
if (selectedTile == null){
|
if (selectedTile == null) {
|
||||||
isVisible=false
|
isVisible = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
isVisible=true
|
isVisible = true
|
||||||
innerTable.clearChildren()
|
innerTable.clearChildren()
|
||||||
|
|
||||||
val stats = selectedTile.getTileStats(city, city.civInfo)
|
val stats = selectedTile.getTileStats(city, city.civInfo)
|
||||||
@ -35,8 +36,8 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
|||||||
innerTable.row()
|
innerTable.row()
|
||||||
innerTable.add(getTileStatsTable(stats)).row()
|
innerTable.add(getTileStatsTable(stats)).row()
|
||||||
|
|
||||||
if(selectedTile.getOwner()==null && selectedTile.neighbors.any {it.getCity()==city}
|
if (selectedTile.getOwner() == null && selectedTile.neighbors.any { it.getCity() == city }
|
||||||
&& selectedTile in city.tilesInRange){
|
&& selectedTile in city.tilesInRange) {
|
||||||
val goldCostOfTile = city.expansion.getGoldCostOfTile(selectedTile)
|
val goldCostOfTile = city.expansion.getGoldCostOfTile(selectedTile)
|
||||||
|
|
||||||
val buyTileButton = "Buy for [$goldCostOfTile] gold".toTextButton()
|
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()
|
"Would you like to purchase [Tile] for [$goldCostOfTile] gold?".tr()
|
||||||
YesNoPopup(purchasePrompt, { city.expansion.buyTile(selectedTile);UncivGame.Current.setScreen(CityScreen(city)) }, cityScreen).open()
|
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
|
|| city.isPuppet
|
||||||
|| !cityScreen.canChangeState)
|
|| !cityScreen.canChangeState)
|
||||||
buyTileButton.disable()
|
buyTileButton.disable()
|
||||||
@ -53,13 +54,11 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
|||||||
innerTable.add(buyTileButton).row()
|
innerTable.add(buyTileButton).row()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(city.civInfo.cities.filterNot { it==city }
|
if (city.civInfo.cities.filterNot { it == city }.any { it.isWorked(selectedTile) })
|
||||||
.any { it.isWorked(selectedTile) }) {
|
|
||||||
innerTable.add("Worked by [${selectedTile.getWorkingCity()!!.name}]".toLabel()).row()
|
innerTable.add("Worked by [${selectedTile.getWorkingCity()!!.name}]".toLabel()).row()
|
||||||
}
|
|
||||||
|
|
||||||
if(city.isWorked(selectedTile)){
|
if (city.isWorked(selectedTile)) {
|
||||||
if(selectedTile.isLocked()) {
|
if (selectedTile.isLocked()) {
|
||||||
val unlockButton = "Unlock".toTextButton()
|
val unlockButton = "Unlock".toTextButton()
|
||||||
unlockButton.onClick {
|
unlockButton.onClick {
|
||||||
city.lockedTiles.remove(selectedTile.position)
|
city.lockedTiles.remove(selectedTile.position)
|
||||||
@ -68,8 +67,7 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
|||||||
}
|
}
|
||||||
if (!cityScreen.canChangeState) unlockButton.disable()
|
if (!cityScreen.canChangeState) unlockButton.disable()
|
||||||
innerTable.add(unlockButton).row()
|
innerTable.add(unlockButton).row()
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
val lockButton = "Lock".toTextButton()
|
val lockButton = "Lock".toTextButton()
|
||||||
lockButton.onClick {
|
lockButton.onClick {
|
||||||
city.lockedTiles.add(selectedTile.position)
|
city.lockedTiles.add(selectedTile.position)
|
||||||
@ -80,6 +78,9 @@ class CityScreenTileTable(private val cityScreen: CityScreen): Table(){
|
|||||||
innerTable.add(lockButton).row()
|
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()
|
innerTable.pack()
|
||||||
pack()
|
pack()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user