From 473bb17ebae7a1ad5ad8187a068f8e4230986cc8 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Tue, 4 Dec 2018 12:57:29 +0800 Subject: [PATCH 1/3] Allow city to acuqire nearby tiles from friendly cities. --- core/src/com/unciv/logic/city/CityExpansionManager.kt | 4 ++++ core/src/com/unciv/ui/cityscreen/CityScreen.kt | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index e34dad211b..ccbf6d0f7a 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -84,6 +84,10 @@ class CityExpansionManager { tileInfo.owningCity=null } + fun AcquireOwnership(tileInfo: TileInfo){ + takeOwnership(tileInfo) + } + private fun takeOwnership(tileInfo: TileInfo){ if(tileInfo.isCityCenter()) throw Exception("What?") if(tileInfo.getCity()!=null) tileInfo.getCity()!!.expansion.relinquishOwnership(tileInfo) diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index 993ef08d40..779885b103 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -240,6 +240,12 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { if(goldCostOfTile>city.civInfo.gold) buyTileButton.disable() tileTable.add(buyTileButton) } + if(tile.getOwner()!=null && tile.getOwner()!!.isPlayerCivilization() + && tile.arialDistanceTo(city.getCenterTile()) <= 3){ + val transferTileButton = TextButton("Acquire".tr(),skin) + transferTileButton.onClick { city.expansion.AcquireOwnership(tile); game.screen = CityScreen(city); dispose() } + tileTable.add(transferTileButton) + } tileTable.pack() tileTable.setPosition(stage.width - 10f - tileTable.width, 10f) From 7c0179b26814c8c1f4718cf00163e19491d0fb54 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Tue, 4 Dec 2018 14:07:14 +0800 Subject: [PATCH 2/3] Only connected tiles are acquirable. --- core/src/com/unciv/ui/cityscreen/CityScreen.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index 779885b103..8809ec3bc3 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -241,7 +241,8 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { tileTable.add(buyTileButton) } if(tile.getOwner()!=null && tile.getOwner()!!.isPlayerCivilization() - && tile.arialDistanceTo(city.getCenterTile()) <= 3){ + && tile.arialDistanceTo(city.getCenterTile()) <= 3 + && tile.neighbors.any{it.getCity()==city}){ val transferTileButton = TextButton("Acquire".tr(),skin) transferTileButton.onClick { city.expansion.AcquireOwnership(tile); game.screen = CityScreen(city); dispose() } tileTable.add(transferTileButton) From 76ecec85115c0813451f680a3dc96e7028be3777 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Tue, 4 Dec 2018 18:09:17 +0800 Subject: [PATCH 3/3] Remove wraping method for transfering tile. --- core/src/com/unciv/logic/city/CityExpansionManager.kt | 6 +----- core/src/com/unciv/ui/cityscreen/CityScreen.kt | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index ccbf6d0f7a..51d3cd4f3e 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -84,11 +84,7 @@ class CityExpansionManager { tileInfo.owningCity=null } - fun AcquireOwnership(tileInfo: TileInfo){ - takeOwnership(tileInfo) - } - - private fun takeOwnership(tileInfo: TileInfo){ + fun takeOwnership(tileInfo: TileInfo){ if(tileInfo.isCityCenter()) throw Exception("What?") if(tileInfo.getCity()!=null) tileInfo.getCity()!!.expansion.relinquishOwnership(tileInfo) diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index 8809ec3bc3..ed01eb2bc1 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -243,9 +243,9 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { if(tile.getOwner()!=null && tile.getOwner()!!.isPlayerCivilization() && tile.arialDistanceTo(city.getCenterTile()) <= 3 && tile.neighbors.any{it.getCity()==city}){ - val transferTileButton = TextButton("Acquire".tr(),skin) - transferTileButton.onClick { city.expansion.AcquireOwnership(tile); game.screen = CityScreen(city); dispose() } - tileTable.add(transferTileButton) + val acquireTileButton = TextButton("Acquire".tr(),skin) + acquireTileButton.onClick { city.expansion.takeOwnership(tile); game.screen = CityScreen(city); dispose() } + tileTable.add(acquireTileButton) } tileTable.pack()