Fix intended Longpress-to-move on Android not working (#9962)

This commit is contained in:
SomeTroglodyte
2023-08-24 09:08:36 +02:00
committed by GitHub
parent 2ce258b281
commit cfd22621ee
2 changed files with 12 additions and 13 deletions

View File

@ -98,14 +98,13 @@ fun Actor.onRightClick(sound: UncivSound = UncivSound.Click, action: ActivationA
* A [sound] will be played (concurrently) on activation unless you specify [UncivSound.Silent]. * A [sound] will be played (concurrently) on activation unless you specify [UncivSound.Silent].
* @return `this` to allow chaining * @return `this` to allow chaining
*/ */
@Suppress("unused") // Just in case - for now, only onRightClick is used @Suppress("unused") // Just in case - for now, the Longpress in WorldMapHolder is using onActivation directly
fun Actor.onLongPress(sound: UncivSound = UncivSound.Click, action: ActivationAction): Actor = fun Actor.onLongPress(sound: UncivSound = UncivSound.Click, action: ActivationAction): Actor =
onActivation(ActivationTypes.Longpress, sound, noEquivalence = true, action) onActivation(ActivationTypes.Longpress, sound, noEquivalence = true, action)
/** Clears activation actions for a specific [type], and, if [noEquivalence] is `true`, /** Clears activation actions for a specific [type], and, if [noEquivalence] is `true`,
* its [equivalent][ActivationTypes.isEquivalent] types. * its [equivalent][ActivationTypes.isEquivalent] types.
*/ */
@Suppress("unused") // Just in case - for now, it's automatic clear via clearListener
fun Actor.clearActivationActions(type: ActivationTypes, noEquivalence: Boolean = true) { fun Actor.clearActivationActions(type: ActivationTypes, noEquivalence: Boolean = true) {
ActorAttachments.get(this).clearActivationActions(type, noEquivalence) ActorAttachments.get(this).clearActivationActions(type, noEquivalence)
} }

View File

@ -39,11 +39,11 @@ import com.unciv.ui.components.extensions.colorFromRGB
import com.unciv.ui.components.extensions.darken import com.unciv.ui.components.extensions.darken
import com.unciv.ui.components.extensions.surroundWithCircle import com.unciv.ui.components.extensions.surroundWithCircle
import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toLabel
import com.unciv.ui.components.input.ActivationTypes
import com.unciv.ui.components.input.KeyCharAndCode import com.unciv.ui.components.input.KeyCharAndCode
import com.unciv.ui.components.input.keyShortcuts import com.unciv.ui.components.input.keyShortcuts
import com.unciv.ui.components.input.onActivation import com.unciv.ui.components.input.onActivation
import com.unciv.ui.components.input.onClick import com.unciv.ui.components.input.onClick
import com.unciv.ui.components.input.onRightClick
import com.unciv.ui.components.tilegroups.TileGroup import com.unciv.ui.components.tilegroups.TileGroup
import com.unciv.ui.components.tilegroups.TileGroupMap import com.unciv.ui.components.tilegroups.TileGroupMap
import com.unciv.ui.components.tilegroups.TileSetStrings import com.unciv.ui.components.tilegroups.TileSetStrings
@ -124,14 +124,15 @@ class WorldMapHolder(
} }
tileGroup.onClick { onTileClicked(tileGroup.tile) } tileGroup.onClick { onTileClicked(tileGroup.tile) }
// On 'droid two-finger tap is mapped to right click and dissent has been expressed // Right mouse click on desktop / Longpress on Android, and no equivalence mapping between those two,
if (Gdx.app.type == Application.ApplicationType.Android) // because on 'droid two-finger tap is mapped to right click and dissent has been expressed
continue tileGroup.onActivation(
type = if (Gdx.app.type == Application.ApplicationType.Android)
// Right mouse click listener ActivationTypes.Longpress else ActivationTypes.RightClick,
tileGroup.onRightClick { noEquivalence = true
) {
val unit = worldScreen.bottomUnitTable.selectedUnit val unit = worldScreen.bottomUnitTable.selectedUnit
?: return@onRightClick ?: return@onActivation
Concurrency.run("WorldScreenClick") { Concurrency.run("WorldScreenClick") {
onTileRightClicked(unit, tileGroup.tile) onTileRightClicked(unit, tileGroup.tile)
} }
@ -798,8 +799,7 @@ class WorldMapHolder(
unitActionOverlays.clear() unitActionOverlays.clear()
} }
override fun reloadMaxZoom() override fun reloadMaxZoom() {
{
val maxWorldZoomOut = UncivGame.Current.settings.maxWorldZoomOut val maxWorldZoomOut = UncivGame.Current.settings.maxWorldZoomOut
val mapRadius = tileMap.mapParameters.mapSize.radius val mapRadius = tileMap.mapParameters.mapSize.radius