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 NUMPAD_ENTER = KeyCharAndCode(Input.Keys.NUMPAD_ENTER)
val SPACE = KeyCharAndCode(Input.Keys.SPACE) val SPACE = KeyCharAndCode(Input.Keys.SPACE)
val DEL = KeyCharAndCode(Input.Keys.FORWARD_DEL) // Gdx "DEL" is just plain wrong! 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 */ /** 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) 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.TileGroup
import com.unciv.ui.tilegroups.TileSetStrings import com.unciv.ui.tilegroups.TileSetStrings
import com.unciv.ui.tilegroups.WorldTileGroup import com.unciv.ui.tilegroups.WorldTileGroup
import com.unciv.ui.utils.KeyCharAndCode
import com.unciv.ui.utils.UnitGroup import com.unciv.ui.utils.UnitGroup
import com.unciv.ui.utils.ZoomableScrollPane import com.unciv.ui.utils.ZoomableScrollPane
import com.unciv.ui.utils.extensions.center import com.unciv.ui.utils.extensions.center
import com.unciv.ui.utils.extensions.colorFromRGB import com.unciv.ui.utils.extensions.colorFromRGB
import com.unciv.ui.utils.extensions.darken 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.onClick
import com.unciv.ui.utils.extensions.surroundWithCircle import com.unciv.ui.utils.extensions.surroundWithCircle
import com.unciv.ui.utils.extensions.toLabel import com.unciv.ui.utils.extensions.toLabel
@ -454,12 +457,13 @@ class WorldMapHolder(
val unitsThatCanMove = dto.unitToTurnsToDestination.keys.filter { it.currentMovement > 0 } val unitsThatCanMove = dto.unitToTurnsToDestination.keys.filter { it.currentMovement > 0 }
if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f
else { else {
moveHereButton.onClick(UncivSound.Silent) { moveHereButton.onActivation(UncivSound.Silent) {
UncivGame.Current.settings.addCompletedTutorialTask("Move unit") UncivGame.Current.settings.addCompletedTutorialTask("Move unit")
if (unitsThatCanMove.any { it.baseUnit.movesLikeAirUnits() }) if (unitsThatCanMove.any { it.baseUnit.movesLikeAirUnits() })
UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit") UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit")
moveUnitToTargetTile(unitsThatCanMove, dto.tileInfo) moveUnitToTargetTile(unitsThatCanMove, dto.tileInfo)
} }
moveHereButton.keyShortcuts.add(KeyCharAndCode.TAB)
} }
return moveHereButton return moveHereButton
} }
@ -475,12 +479,13 @@ class WorldMapHolder(
unitIcon.y = buttonSize - unitIcon.height unitIcon.y = buttonSize - unitIcon.height
swapWithButton.addActor(unitIcon) swapWithButton.addActor(unitIcon)
swapWithButton.onClick(UncivSound.Silent) { swapWithButton.onActivation(UncivSound.Silent) {
UncivGame.Current.settings.addCompletedTutorialTask("Move unit") UncivGame.Current.settings.addCompletedTutorialTask("Move unit")
if (dto.unit.baseUnit.movesLikeAirUnits()) if (dto.unit.baseUnit.movesLikeAirUnits())
UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit") UncivGame.Current.settings.addCompletedTutorialTask("Move an air unit")
swapMoveUnitToTargetTile(dto.unit, dto.tileInfo) swapMoveUnitToTargetTile(dto.unit, dto.tileInfo)
} }
swapWithButton.keyShortcuts.add(KeyCharAndCode.TAB)
return swapWithButton 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.models.translations.tr
import com.unciv.ui.utils.BaseScreen import com.unciv.ui.utils.BaseScreen
import com.unciv.ui.utils.KeyCharAndCode 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.isEnabled
import com.unciv.ui.utils.extensions.keyShortcuts import com.unciv.ui.utils.extensions.keyShortcuts
import com.unciv.ui.utils.extensions.onActivation import com.unciv.ui.utils.extensions.onActivation
@ -21,6 +22,8 @@ class NextTurnButton(
onActivation { nextTurnAction.action() } onActivation { nextTurnAction.action() }
keyShortcuts.add(Input.Keys.SPACE) keyShortcuts.add(Input.Keys.SPACE)
keyShortcuts.add('n') keyShortcuts.add('n')
// Let unit actions override this for command "Wait".
keyShortcuts.add(KeyShortcut(KeyCharAndCode('z'), -100))
} }
fun update(isSomethingOpen: Boolean, fun update(isSomethingOpen: Boolean,