More shortcuts (#7171)

* Add shortcut 'Tab' to perform unit movement

* When no unit is selected, use 'Z' as a shortcut to select next unit
This commit is contained in:
Paul Pogonyshev 2022-06-18 01:53:45 +02:00 committed by GitHub
parent 71160b2e63
commit d6b41c56ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 2 deletions

View File

@ -58,6 +58,7 @@ data class KeyCharAndCode(val char: Char, val code: Int) {
val NUMPAD_ENTER = KeyCharAndCode(Input.Keys.NUMPAD_ENTER)
val SPACE = KeyCharAndCode(Input.Keys.SPACE)
val DEL = KeyCharAndCode(Input.Keys.FORWARD_DEL) // Gdx "DEL" is just plain wrong!
val TAB = KeyCharAndCode(Input.Keys.TAB)
/** Guaranteed to be ignored by [KeyShortcutDispatcher] and never to be generated for an actual event, used as fallback to ensure no action is taken */
val UNKNOWN = KeyCharAndCode(Input.Keys.UNKNOWN)

View File

@ -37,11 +37,14 @@ import com.unciv.ui.map.TileGroupMap
import com.unciv.ui.tilegroups.TileGroup
import com.unciv.ui.tilegroups.TileSetStrings
import com.unciv.ui.tilegroups.WorldTileGroup
import com.unciv.ui.utils.KeyCharAndCode
import com.unciv.ui.utils.UnitGroup
import com.unciv.ui.utils.ZoomableScrollPane
import com.unciv.ui.utils.extensions.center
import com.unciv.ui.utils.extensions.colorFromRGB
import com.unciv.ui.utils.extensions.darken
import com.unciv.ui.utils.extensions.keyShortcuts
import com.unciv.ui.utils.extensions.onActivation
import com.unciv.ui.utils.extensions.onClick
import com.unciv.ui.utils.extensions.surroundWithCircle
import com.unciv.ui.utils.extensions.toLabel
@ -454,12 +457,13 @@ class WorldMapHolder(
val unitsThatCanMove = dto.unitToTurnsToDestination.keys.filter { it.currentMovement > 0 }
if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f
else {
moveHereButton.onClick(UncivSound.Silent) {
moveHereButton.onActivation(UncivSound.Silent) {
UncivGame.Current.settings.addCompletedTutorialTask("Move unit")
if (unitsThatCanMove.any { it.baseUnit.movesLikeAirUnits() })
UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit")
moveUnitToTargetTile(unitsThatCanMove, dto.tileInfo)
}
moveHereButton.keyShortcuts.add(KeyCharAndCode.TAB)
}
return moveHereButton
}
@ -475,12 +479,13 @@ class WorldMapHolder(
unitIcon.y = buttonSize - unitIcon.height
swapWithButton.addActor(unitIcon)
swapWithButton.onClick(UncivSound.Silent) {
swapWithButton.onActivation(UncivSound.Silent) {
UncivGame.Current.settings.addCompletedTutorialTask("Move unit")
if (dto.unit.baseUnit.movesLikeAirUnits())
UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit")
swapMoveUnitToTargetTile(dto.unit, dto.tileInfo)
}
swapWithButton.keyShortcuts.add(KeyCharAndCode.TAB)
return swapWithButton
}

View File

@ -6,6 +6,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.models.translations.tr
import com.unciv.ui.utils.BaseScreen
import com.unciv.ui.utils.KeyCharAndCode
import com.unciv.ui.utils.KeyShortcut
import com.unciv.ui.utils.extensions.isEnabled
import com.unciv.ui.utils.extensions.keyShortcuts
import com.unciv.ui.utils.extensions.onActivation
@ -21,6 +22,8 @@ class NextTurnButton(
onActivation { nextTurnAction.action() }
keyShortcuts.add(Input.Keys.SPACE)
keyShortcuts.add('n')
// Let unit actions override this for command "Wait".
keyShortcuts.add(KeyShortcut(KeyCharAndCode('z'), -100))
}
fun update(isSomethingOpen: Boolean,