diff --git a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt
index e7510bda46..ca5730ce00 100644
--- a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt
+++ b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt
@@ -168,12 +168,10 @@ class ConstructionsTable(val cityScreen: CityScreen) : Table(CameraStageBaseScre
val specialConstructions = ArrayList
()
thread {
-
- val constructionButtonDTOList = getConstructionButtonDTOs() // Since this can be a heavy operation and leads to many ANRs on older phones...
+ // Since this can be a heavy operation and leads to many ANRs on older phones we put the metadata-gathering in another thread.
+ val constructionButtonDTOList = getConstructionButtonDTOs()
Gdx.app.postRunnable {
- // For some bizarre reason, moving this to another thread messes up the entire construction list?! Haven't figured out why yet
availableConstructionsTable.clear()
-
for (dto in constructionButtonDTOList) {
val constructionButton = getConstructionButton(dto)
when (dto.construction) {
diff --git a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt
index 55682750a8..cacd072a99 100644
--- a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt
+++ b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt
@@ -36,24 +36,24 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
internal var selectedTile: TileInfo? = null
val tileGroups = HashMap()
- var unitActionOverlay :Actor?=null
+ var unitActionOverlay: Actor? = null
init {
if (Gdx.app.type == Application.ApplicationType.Desktop) this.setFlingTime(0f)
}
// Used to transfer data on the "move here" button that should be created, from the side thread to the main thread
- class MoveHereButtonDto(val unitToTurnsToDestination: HashMap, val tileInfo: TileInfo)
+ class MoveHereButtonDto(val unitToTurnsToDestination: HashMap, val tileInfo: TileInfo)
internal fun addTiles() {
val tileSetStrings = TileSetStrings()
val daTileGroups = tileMap.values.map { WorldTileGroup(worldScreen, it, tileSetStrings) }
- for(tileGroup in daTileGroups) tileGroups[tileGroup.tileInfo]=tileGroup
+ for (tileGroup in daTileGroups) tileGroups[tileGroup.tileInfo] = tileGroup
- val allTiles = TileGroupMap(daTileGroups,worldScreen.stage.width)
+ val allTiles = TileGroupMap(daTileGroups, worldScreen.stage.width)
- for(tileGroup in tileGroups.values) {
+ for (tileGroup in tileGroups.values) {
tileGroup.cityButtonLayerGroup.onClick(UncivSound.Silent) {
onTileClicked(tileGroup.tileInfo)
}
@@ -75,7 +75,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
.firstOrNull { it.tileToAttack == tileGroup.tileInfo }
if (unit.canAttack() && attackableTile != null) {
Battle.moveAndAttack(MapUnitCombatant(unit), attackableTile)
- worldScreen.shouldUpdate=true
+ worldScreen.shouldUpdate = true
return@thread
}
@@ -92,8 +92,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
actor = allTiles
- setSize(worldScreen.stage.width*2, worldScreen.stage.height*2)
- setOrigin(width/2,height/2)
+ setSize(worldScreen.stage.width * 2, worldScreen.stage.height * 2)
+ setOrigin(width / 2, height / 2)
center(worldScreen.stage)
layout() // Fit the scroll pane to the contents - otherwise, setScroll won't work!
@@ -112,8 +112,10 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
if (previousSelectedUnits.isNotEmpty() && previousSelectedUnits.any { it.getTile() != tileInfo }
&& worldScreen.isPlayersTurn
- && previousSelectedUnits.any { it.movement.canMoveTo(tileInfo) ||
- it.movement.isUnknownTileWeShouldAssumeToBePassable(tileInfo)}) {
+ && previousSelectedUnits.any {
+ it.movement.canMoveTo(tileInfo) ||
+ it.movement.isUnknownTileWeShouldAssumeToBePassable(tileInfo)
+ }) {
// this can take a long time, because of the unit-to-tile calculation needed, so we put it in a different thread
addTileOverlaysWithUnitMovement(previousSelectedUnits, tileInfo)
} else addTileOverlays(tileInfo) // no unit movement but display the units in the tile etc.
@@ -134,7 +136,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
- fun moveUnitToTargetTile(selectedUnits: List, targetTile:TileInfo) {
+ fun moveUnitToTargetTile(selectedUnits: List, targetTile: TileInfo) {
// this can take a long time, because of the unit-to-tile calculation needed, so we put it in a different thread
// THIS PART IS REALLY ANNOYING
// So lets say you have 2 units you want to move in the same direction, right
@@ -189,8 +191,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
* so that and that alone will be relegated to the concurrent thread.
*/
- val unitToTurnsToTile = HashMap()
- for(unit in selectedUnits) {
+ val unitToTurnsToTile = HashMap()
+ for (unit in selectedUnits) {
val turnsToGetThere = if (unit.type.isAirUnit()) {
if (unit.movement.canReach(tileInfo)) 1
else 0
@@ -199,8 +201,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
Gdx.app.postRunnable {
- val unitsWhoCanMoveThere = HashMap(unitToTurnsToTile.filter { it.value!=0 })
- if (unitsWhoCanMoveThere.isEmpty()){ // give the regular tile overlays with no unit movement
+ val unitsWhoCanMoveThere = HashMap(unitToTurnsToTile.filter { it.value != 0 })
+ if (unitsWhoCanMoveThere.isEmpty()) { // give the regular tile overlays with no unit movement
addTileOverlays(tileInfo)
worldScreen.shouldUpdate = true
return@postRunnable
@@ -211,7 +213,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
if (UncivGame.Current.settings.singleTapMove && turnsToGetThere == 1) {
// single turn instant move
val selectedUnit = unitsWhoCanMoveThere.keys.first()
- for(unit in unitsWhoCanMoveThere.keys) {
+ for (unit in unitsWhoCanMoveThere.keys) {
unit.movement.headTowards(tileInfo)
}
worldScreen.bottomUnitTable.selectUnit(selectedUnit) // keep moved unit selected
@@ -226,17 +228,17 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
}
- private fun addTileOverlays(tileInfo: TileInfo, moveHereDto:MoveHereButtonDto?=null){
+ private fun addTileOverlays(tileInfo: TileInfo, moveHereDto: MoveHereButtonDto? = null) {
val table = Table().apply { defaults().pad(10f) }
- if(moveHereDto!=null && worldScreen.canChangeState)
+ if (moveHereDto != null && worldScreen.canChangeState)
table.add(getMoveHereButton(moveHereDto))
val unitList = ArrayList()
if (tileInfo.isCityCenter()
- && (tileInfo.getOwner()==worldScreen.viewingCiv || worldScreen.viewingCiv.isSpectator())) {
+ && (tileInfo.getOwner() == worldScreen.viewingCiv || worldScreen.viewingCiv.isSpectator())) {
unitList.addAll(tileInfo.getCity()!!.getCenterTile().getUnits())
} else if (tileInfo.airUnits.isNotEmpty()
- && (tileInfo.airUnits.first().civInfo==worldScreen.viewingCiv || worldScreen.viewingCiv.isSpectator())) {
+ && (tileInfo.airUnits.first().civInfo == worldScreen.viewingCiv || worldScreen.viewingCiv.isSpectator())) {
unitList.addAll(tileInfo.getUnits())
}
@@ -254,7 +256,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
addOverlayOnTileGroup(tileInfo, table)
- table.moveBy(0f,60f)
+ table.moveBy(0f, 60f)
}
private fun getMoveHereButton(dto: MoveHereButtonDto): Group {
@@ -277,7 +279,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
moveHereButton.addActor(unitIcon)
val unitsThatCanMove = dto.unitToTurnsToDestination.keys.filter { it.currentMovement > 0 }
- if(unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f
+ if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f
else {
moveHereButton.onClick(UncivSound.Silent) {
UncivGame.Current.settings.addCompletedTutorialTask("Move unit")
@@ -295,8 +297,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
val group = tileGroups[tileInfo]!!
actor.center(group)
- actor.x+=group.x
- actor.y+=group.y
+ actor.x += group.x
+ actor.y += group.y
group.parent.addActor(actor) // Add the overlay to the TileGroupMap - it's what actually displays all the tiles
actor.toFront()
@@ -387,19 +389,19 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
val attackableTiles: List = if (unit.type.isCivilian()) listOf()
else {
BattleHelper.getAttackableEnemies(unit, unit.movement.getDistanceToTiles())
- .filter { (UncivGame.Current.viewEntireMapForDebug ||
- playerViewableTilePositions.contains(it.tileToAttack.position)) }
+ .filter {
+ (UncivGame.Current.viewEntireMapForDebug ||
+ playerViewableTilePositions.contains(it.tileToAttack.position))
+ }
.distinctBy { it.tileToAttack }
}
for (attackableTile in attackableTiles) {
-
tileGroups[attackableTile.tileToAttack]!!.showCircle(colorFromRGB(237, 41, 57))
-
- tileGroups[attackableTile.tileToAttack]!!.showCrosshair (
+ tileGroups[attackableTile.tileToAttack]!!.showCrosshair(
// the targets which cannot be attacked without movements shown as orange-ish
if (attackableTile.tileToAttackFrom != unit.currentTile)
- colorFromRGB(255, 75, 0)
+ colorFromRGB(255, 75, 0)
else Color.RED
)
}
@@ -427,7 +429,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
}
- var blinkAction:Action? = null
+ var blinkAction: Action? = null
fun setCenterPosition(vector: Vector2, immediately: Boolean = false, selectUnit: Boolean = true) {
val tileGroup = tileGroups.values.firstOrNull { it.tileInfo.position == vector } ?: return
selectedTile = tileGroup.tileInfo
@@ -472,7 +474,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
worldScreen.shouldUpdate = true
}
- override fun zoom(zoomScale:Float) {
+ override fun zoom(zoomScale: Float) {
super.zoom(zoomScale)
val scale = 1 / scaleX // don't use zoomScale itself, in case it was out of bounds and not applied
if (scale >= 1)
@@ -489,6 +491,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
}
// For debugging purposes
- override fun draw(batch: Batch?, parentAlpha: Float) { super.draw(batch, parentAlpha) }
- override fun act(delta: Float) { super.act(delta) }
+ override fun draw(batch: Batch?, parentAlpha: Float) = super.draw(batch, parentAlpha)
+
+ override fun act(delta: Float) = super.act(delta)
}
\ No newline at end of file