From 23bd52fc664d664ac4e5a85b2c20485fb068326b Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 25 Apr 2018 22:59:44 +0300 Subject: [PATCH] Changed all usages of GetTilesInDisttance to center around TileInfo, not TileMap --- core/src/com/unciv/UnCivGame.kt | 3 +++ core/src/com/unciv/logic/Automation.kt | 6 +++--- core/src/com/unciv/logic/WorkerAutomation.kt | 2 +- core/src/com/unciv/logic/city/CityExpansionManager.kt | 7 +++---- core/src/com/unciv/logic/city/CityInfo.kt | 2 +- core/src/com/unciv/logic/city/CityStats.kt | 2 +- core/src/com/unciv/logic/civilization/TechManager.kt | 2 +- core/src/com/unciv/models/gamebasics/Building.kt | 4 ++-- core/src/com/unciv/ui/cityscreen/CityScreen.kt | 2 +- core/src/com/unciv/ui/worldscreen/BattleTable.kt | 3 +-- core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt | 2 +- 11 files changed, 18 insertions(+), 17 deletions(-) diff --git a/core/src/com/unciv/UnCivGame.kt b/core/src/com/unciv/UnCivGame.kt index 00d440e4e2..322ca8ca29 100644 --- a/core/src/com/unciv/UnCivGame.kt +++ b/core/src/com/unciv/UnCivGame.kt @@ -52,6 +52,9 @@ class UnCivGame : Game() { gameInfo.tileMap = TileMap(20) gameInfo.civilizations.add(CivilizationInfo("Babylon", Vector2.Zero, gameInfo)) // first one is player civ + val freeTiles = gameInfo.tileMap.values + freeTiles.removeAll() + val barbarianCivilization = CivilizationInfo() gameInfo.civilizations.add(barbarianCivilization)// second is barbarian civ diff --git a/core/src/com/unciv/logic/Automation.kt b/core/src/com/unciv/logic/Automation.kt index 1f7823e537..0faf800367 100644 --- a/core/src/com/unciv/logic/Automation.kt +++ b/core/src/com/unciv/logic/Automation.kt @@ -147,7 +147,7 @@ class Automation { // todo // else, find the closest enemy unit that we know of within 5 spaces and advance towards it - val closestUnit = unit.civInfo.gameInfo.tileMap.getTilesInDistance(unit.getTile().position, 5) + val closestUnit = unit.getTile().getTilesInDistance(5) .firstOrNull { attackableTiles.contains(it) } if (closestUnit != null) { @@ -168,8 +168,8 @@ class Automation { val tileMap = unit.civInfo.gameInfo.tileMap // find best city location within 5 tiles - val bestCityLocation = tileMap.getTilesInDistance(unit.getTile().position, 7) - .filterNot { tileMap.getTilesInDistance(it.position,2).any { tid -> tid.isCityCenter } } + val bestCityLocation = unit.getTile().getTilesInDistance(7) + .filterNot { it.getTilesInDistance(2).any { tid -> tid.isCityCenter } } .sortedByDescending { rankTileAsCityCenter(it, unit.civInfo) } .first() diff --git a/core/src/com/unciv/logic/WorkerAutomation.kt b/core/src/com/unciv/logic/WorkerAutomation.kt index a8b96ecbf4..de92421489 100644 --- a/core/src/com/unciv/logic/WorkerAutomation.kt +++ b/core/src/com/unciv/logic/WorkerAutomation.kt @@ -26,7 +26,7 @@ public class WorkerAutomation(){ } private fun findTileToWork(currentTile: TileInfo, civInfo: CivilizationInfo): TileInfo { - val selectedTile = currentTile.tileMap.getTilesInDistance(currentTile.position, 4) + val selectedTile = currentTile.getTilesInDistance(4) .filter { (it.unit == null || it == currentTile) && it.improvement == null diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index 75a36c5c32..df6c562adb 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -8,9 +8,8 @@ class CityExpansionManager { lateinit var cityInfo: CityInfo var cultureStored: Int = 0 - fun reset(){ - cityInfo.tiles = ArrayList(cityInfo.civInfo.gameInfo.tileMap - .getTilesInDistance(cityInfo.location, 1).map { it.position }) + fun reset() { + cityInfo.tiles = ArrayList(cityInfo.getCenterTile().getTilesInDistance(1).map { it.position }) } // This one has conflicting sources - @@ -31,7 +30,7 @@ class CityExpansionManager { cultureStored -= getCultureToNextTile() for (i in 2..3) { - val tiles = cityInfo.civInfo.gameInfo.tileMap.getTilesInDistance(cityInfo.location, i).filter { it.getOwner() == null } + val tiles = cityInfo.getCenterTile().getTilesInDistance(i).filter { it.getOwner() == null } if (tiles.isEmpty()) continue val chosenTile = tiles.maxBy { Automation().rankTile(it,cityInfo.civInfo) } cityInfo.tiles.add(chosenTile!!.position) diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index c4ed949983..890de5d3a9 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -33,7 +33,7 @@ class CityInfo { fun getCenterTile(): TileInfo = tileMap[location] fun getTiles(): List = tiles.map { tileMap[it] } - fun getTilesInRange(): List = tileMap.getTilesInDistance(location, 3).filter { civInfo == it.getOwner() } + fun getTilesInRange(): List = getCenterTile().getTilesInDistance( 3).filter { civInfo == it.getOwner() } // Remove resources required by buildings diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index 91393453d9..d9c6c9f3e2 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -239,7 +239,7 @@ class CityStats { var tilesToCheck : List = listOf(cityInfo.getCenterTile()) while (tilesToCheck.isNotEmpty()) { val newTiles = tilesToCheck - .flatMap { cityInfo.tileMap.getTilesInDistance(it.position, 1) }.distinct() + .flatMap { it.neighbors }.distinct() .filter{ !tilesReached.contains(it) && !tilesToCheck.contains(it) && (roadType !== RoadStatus.Road || it.roadStatus !== RoadStatus.None) && (roadType !== RoadStatus.Railroad || it.roadStatus === roadType) } diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index 587c0da90b..0451265081 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -61,7 +61,7 @@ class TechManager { for (tileInfo in civInfo.gameInfo.tileMap.values .filter { it.resource == revealedResource.name && civInfo == it.getOwner() }) { - val closestCityTile = civInfo.gameInfo.tileMap.getTilesInDistance(tileInfo.position, 4) + val closestCityTile = tileInfo.getTilesInDistance(4) .firstOrNull { it.isCityCenter } if (closestCityTile != null) { civInfo.addNotification( diff --git a/core/src/com/unciv/models/gamebasics/Building.kt b/core/src/com/unciv/models/gamebasics/Building.kt index 63083d231c..71ee988f78 100644 --- a/core/src/com/unciv/models/gamebasics/Building.kt +++ b/core/src/com/unciv/models/gamebasics/Building.kt @@ -1,11 +1,11 @@ package com.unciv.models.gamebasics +import com.unciv.UnCivGame import com.unciv.logic.city.CityConstructions import com.unciv.logic.city.IConstruction import com.unciv.models.stats.NamedStats import com.unciv.models.stats.Stats import com.unciv.ui.ScienceVictoryScreen -import com.unciv.UnCivGame import com.unciv.ui.VictoryScreen import com.unciv.ui.pickerscreens.PolicyPickerScreen @@ -142,7 +142,7 @@ class Building : NamedStats(), IConstruction, ICivilopedia { if (requiredBuildingInAllCities != null && civInfo.cities.any { !it.cityConstructions.isBuilt(requiredBuildingInAllCities!!) }) return false if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!)) return false - if ("MustBeNextToDesert" == unique && !civInfo.gameInfo.tileMap.getTilesInDistance(construction.cityInfo.location, 1).any { it.baseTerrain == "Desert" }) + if ("MustBeNextToDesert" == unique && !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" }) return false if (requiredResource != null && !civInfo.getCivResources().containsKey(GameBasics.TileResources[requiredResource!!])) return false diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index d751d6a032..d5ace9a99a 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -152,7 +152,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() { val allTiles = Group() - for (tileInfo in game.gameInfo.tileMap.getTilesInDistance(cityInfo.location, 5)) { + for (tileInfo in cityInfo.getCenterTile().getTilesInDistance(5)) { if (!city.civInfo.exploredTiles.contains(tileInfo.position)) continue // Don't even bother to display it. val group = CityTileGroup(cityInfo, tileInfo) group.addClickListener { diff --git a/core/src/com/unciv/ui/worldscreen/BattleTable.kt b/core/src/com/unciv/ui/worldscreen/BattleTable.kt index 3516cacd04..5782897095 100644 --- a/core/src/com/unciv/ui/worldscreen/BattleTable.kt +++ b/core/src/com/unciv/ui/worldscreen/BattleTable.kt @@ -3,7 +3,6 @@ package com.unciv.ui.worldscreen import com.badlogic.gdx.scenes.scene2d.ui.Label import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.ui.TextButton -import com.unciv.UnCivGame import com.unciv.logic.battle.* import com.unciv.logic.map.TileInfo import com.unciv.logic.map.UnitType @@ -135,7 +134,7 @@ class BattleTable(val worldScreen: WorldScreen): Table() { } else { // ranged - val tilesInRange = UnCivGame.Current.gameInfo.tileMap.getTilesInDistance(attacker.getTile().position, 2) + val tilesInRange = attacker.getTile().getTilesInDistance(2) attackerCanReachDefender = tilesInRange.contains(defender.getTile()) } diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index cfdc570cae..3dab58d43f 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -66,7 +66,7 @@ class UnitActions { worldScreen.update() }, unit.currentMovement != 0f && - !tileMapHolder.tileMap.getTilesInDistance(tile.position, 2).any { it.isCityCenter }) + !tile.getTilesInDistance(2).any { it.isCityCenter }) } if (unit.name == "Worker") {