From 94e8264d36cbb4d23e2c0b5af2c843daba8ecbd1 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 13 Apr 2022 21:17:41 +0300 Subject: [PATCH] 4.0.6-patch1 Better timesaving for arrows that doesn't keep arrows when we disable view --- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 7 ++----- .../unciv/ui/worldscreen/WorldMapHolder.kt | 7 +------ .../com/unciv/ui/worldscreen/WorldScreen.kt | 20 ++++++++++--------- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 8445c23b4b..27d4090198 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -558,12 +558,9 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, /** Create and setup Actors for all arrows to be drawn from this tile. */ private fun updateArrows() { - if (!UncivGame.Current.settings.showUnitMovements) return // don't waste time if this isn't important - for (actorList in arrows.values) { - for (actor in actorList) { + for (actorList in arrows.values) + for (actor in actorList) actor.remove() - } - } arrows.clear() val tileScale = 50f * 0.8f // See notes in updateRoadImages. diff --git a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt index 75cc7d5d0e..009e9b4f6b 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt @@ -486,13 +486,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap * @param visibleAttacks Sequence of pairs of [Vector2] positions of the sources and the targets of all attacks that can be displayed. * */ internal fun updateMovementOverlay(pastVisibleUnits: Sequence, targetVisibleUnits: Sequence, visibleAttacks: Sequence>) { - if (!UncivGame.Current.settings.showUnitMovements) { - return - } for (unit in pastVisibleUnits) { - if (unit.movementMemories.isEmpty()) { - continue - } + if (unit.movementMemories.isEmpty()) continue val stepIter = unit.movementMemories.iterator() var previous = stepIter.next() while (stepIter.hasNext()) { diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index ed59309706..21e48ac168 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -415,15 +415,17 @@ class WorldScreen(val gameInfo: GameInfo, val viewingCiv:CivilizationInfo) : Bas unitActionsTable.y = bottomUnitTable.height mapHolder.resetArrows() - val allUnits = gameInfo.civilizations.asSequence().flatMap { it.getCivUnits() } - val allAttacks = allUnits.map { unit -> unit.attacksSinceTurnStart.asSequence().map { attacked -> Triple(unit.civInfo, unit.getTile().position, attacked) } }.flatten() + - gameInfo.civilizations.asSequence().flatMap { civInfo -> civInfo.attacksSinceTurnStart.asSequence().map { Triple(civInfo, it.source, it.target) } } - mapHolder.updateMovementOverlay( - allUnits.filter(mapVisualization::isUnitPastVisible), - allUnits.filter(mapVisualization::isUnitFutureVisible), - allAttacks.filter { (attacker, source, target) -> mapVisualization.isAttackVisible(attacker, source, target) } - .map { (_, source, target) -> source to target } - ) + if (UncivGame.Current.settings.showUnitMovements) { + val allUnits = gameInfo.civilizations.asSequence().flatMap { it.getCivUnits() } + val allAttacks = allUnits.map { unit -> unit.attacksSinceTurnStart.asSequence().map { attacked -> Triple(unit.civInfo, unit.getTile().position, attacked) } }.flatten() + + gameInfo.civilizations.asSequence().flatMap { civInfo -> civInfo.attacksSinceTurnStart.asSequence().map { Triple(civInfo, it.source, it.target) } } + mapHolder.updateMovementOverlay( + allUnits.filter(mapVisualization::isUnitPastVisible), + allUnits.filter(mapVisualization::isUnitFutureVisible), + allAttacks.filter { (attacker, source, target) -> mapVisualization.isAttackVisible(attacker, source, target) } + .map { (_, source, target) -> source to target } + ) + } // if we use the clone, then when we update viewable tiles // it doesn't update the explored tiles of the civ... need to think about that harder