From 5e003cfd642398988ea6e1866856fae6ace50a2f Mon Sep 17 00:00:00 2001 From: Federico Luongo Date: Sun, 12 Jan 2020 22:29:26 +0100 Subject: [PATCH] Fix Map Editor Lag (#1670) In painting mode, only the last drawn tiles are updated. --- core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt b/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt index 2a22a9ab49..be09dcb86c 100644 --- a/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt +++ b/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt @@ -7,6 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.InputListener import com.badlogic.gdx.scenes.scene2d.actions.Actions import com.badlogic.gdx.scenes.scene2d.ui.TextButton import com.unciv.logic.MapSaver +import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileMap import com.unciv.models.ruleset.RulesetCache import com.unciv.models.translations.tr @@ -90,6 +91,7 @@ class MapEditorScreen(): CameraStageBaseScreen() { var isDragging = false var isPainting = false var touchDownTime = System.currentTimeMillis() + var lastDrawnTiles = HashSet() override fun touchDown(event: InputEvent?, x: Float, y: Float, pointer: Int, button: Int): Boolean { touchDownTime = System.currentTimeMillis() @@ -107,8 +109,10 @@ class MapEditorScreen(): CameraStageBaseScreen() { } if (isPainting) { - mapHolder.updateTileGroups() - mapHolder.setTransients() + + for (tileInfo in lastDrawnTiles) + mapHolder.tileGroups[tileInfo]!!.hideCircle() + lastDrawnTiles.clear() val stageCoords = mapHolder.actor.stageToLocalCoordinates(Vector2(event!!.stageX, event.stageY)) val centerTileInfo = mapHolder.getClosestTileTo(stageCoords) @@ -122,13 +126,15 @@ class MapEditorScreen(): CameraStageBaseScreen() { tileInfo.setTransients() mapHolder.tileGroups[tileInfo]!!.update() mapHolder.tileGroups[tileInfo]!!.showCircle(Color.WHITE) + + lastDrawnTiles.add(tileInfo) } } } } override fun touchUp(event: InputEvent?, x: Float, y: Float, pointer: Int, button: Int) { - // Reset tile overlays + // Reset the whole map if (isPainting) { mapHolder.updateTileGroups() mapHolder.setTransients()