Fix the missing overlays caused by commit 0ffb038129 (#2586)

This commit is contained in:
Väinö Mäkelä
2020-05-05 20:15:13 +03:00
committed by GitHub
parent 647a0c9ff7
commit 91c1e0ae6d

View File

@ -94,8 +94,10 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
private fun addTileOverlaysWithUnitMovement(selectedUnit: MapUnit, tileInfo: TileInfo) {
// some code is copied from canReach not to call getShortestPath on the main thread before calling it on this thread
if (selectedUnit.type.isAirUnit() && selectedUnit.currentTile.aerialDistanceTo(tileInfo) > selectedUnit.getRange()*2)
if (selectedUnit.type.isAirUnit() && selectedUnit.currentTile.aerialDistanceTo(tileInfo) > selectedUnit.getRange()*2) {
addTileOverlays(tileInfo)
return
}
thread(name="TurnsToGetThere") {
/** LibGdx sometimes has these weird errors when you try to edit the UI layout from 2 separate threads.
* And so, all UI editing will be done on the main thread.
@ -104,8 +106,6 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
*/
val turnsToGetThere = if(selectedUnit.type.isAirUnit()) 1
else selectedUnit.movement.getShortestPath(tileInfo).size // this is what takes the most time, tbh
if (turnsToGetThere == 0) // there is no path to tileInfo
return@thread
Gdx.app.postRunnable {
if(UncivGame.Current.settings.singleTapMove && turnsToGetThere==1) {
@ -113,8 +113,9 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap
selectedUnit.movement.headTowards(tileInfo)
worldScreen.bottomUnitTable.selectedUnit = selectedUnit // keep moved unit selected
} else {
// add "move to" button
val moveHereButtonDto = MoveHereButtonDto(selectedUnit, tileInfo, turnsToGetThere)
// add "move to" button if there is a path to tileInfo
val moveHereButtonDto = if (turnsToGetThere != 0) MoveHereButtonDto(selectedUnit, tileInfo, turnsToGetThere)
else null
addTileOverlays(tileInfo, moveHereButtonDto)
}
worldScreen.shouldUpdate = true