From 922a29e60f668e5cada7b6367b4aef203a4a3080 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Sun, 30 Dec 2018 11:46:27 +0800 Subject: [PATCH] Worker automation uses more resource. --- .../logic/automation/WorkerAutomation.kt | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/core/src/com/unciv/logic/automation/WorkerAutomation.kt b/core/src/com/unciv/logic/automation/WorkerAutomation.kt index f71d2dc900..24713acd5b 100644 --- a/core/src/com/unciv/logic/automation/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/automation/WorkerAutomation.kt @@ -30,7 +30,7 @@ class WorkerAutomation(val unit: MapUnit) { return } if (tile.improvementInProgress == null && tile.isLand()) { - val improvement = chooseImprovement(tile) + val improvement = chooseImprovement(tile, unit.civInfo) if (tile.canBuildImprovement(improvement, unit.civInfo)) { // What if we're stuck on this tile but can't build there? tile.startWorkingOnImprovement(improvement, unit.civInfo) @@ -98,10 +98,10 @@ class WorkerAutomation(val unit: MapUnit) { val workableTiles = currentTile.getTilesInDistance(4) .filter { (it.civilianUnit== null || it == currentTile) - && it.improvement == null + && (it.improvement == null || (it.hasViewableResource(unit.civInfo) && it.getTileResource().improvement != it.improvement)) && it.isLand() && !it.getBaseTerrain().impassable - && it.canBuildImprovement(chooseImprovement(it), unit.civInfo) + && it.canBuildImprovement(chooseImprovement(it, unit.civInfo), unit.civInfo) && {val city=it.getCity(); city==null || it.getCity()?.civInfo == unit.civInfo}() // don't work tiles belonging to another civ }.sortedByDescending { getPriority(it, unit.civInfo) }.toMutableList() @@ -131,14 +131,21 @@ class WorkerAutomation(val unit: MapUnit) { return priority } - private fun chooseImprovement(tile: TileInfo): TileImprovement { + private fun chooseImprovement(tile: TileInfo, civInfo: CivilizationInfo): TileImprovement { + val improvementStringForResource : String ?= when { + tile.resource == null || !tile.hasViewableResource(civInfo) -> null + tile.terrainFeature == "Marsh" -> "Remove Marsh" + tile.terrainFeature == "Jungle" -> "Remove Jungle" + tile.terrainFeature == "Forest" && tile.getTileResource().improvement!="Camp" -> "Remove Forest" + else -> tile.getTileResource().improvement + } + val improvementString = when { tile.improvementInProgress != null -> tile.improvementInProgress + improvementStringForResource != null -> improvementStringForResource tile.terrainFeature == "Jungle" -> "Trading post" tile.terrainFeature == "Marsh" -> "Remove Marsh" - tile.terrainFeature == "Forest" && - (tile.resource == null || tile.getTileResource().improvement!="Camp") -> "Lumber mill" - tile.resource != null -> tile.getTileResource().improvement + tile.terrainFeature == "Forest" -> "Lumber mill" tile.baseTerrain == "Hill" -> "Mine" tile.baseTerrain in listOf("Grassland","Desert","Plains") -> "Farm" tile.baseTerrain == "Tundra" -> "Trading post"