Fix "Move a unit" tutorial isn't completed by moving via right-click (#11591)

This commit is contained in:
SomeTroglodyte
2024-05-14 10:00:51 +02:00
committed by GitHub
parent 9ddc2337ac
commit 04423be44f

View File

@ -267,6 +267,11 @@ class WorldMapHolder(
worldScreen.shouldUpdate = localShouldUpdate worldScreen.shouldUpdate = localShouldUpdate
} }
private fun markUnitMoveTutorialComplete(unit: MapUnit) {
val key = if (unit.baseUnit.movesLikeAirUnits()) "Move an air unit" else "Move unit"
UncivGame.Current.settings.addCompletedTutorialTask(key)
}
private fun moveUnitToTargetTile(selectedUnits: List<MapUnit>, targetTile: Tile) { private fun moveUnitToTargetTile(selectedUnits: List<MapUnit>, targetTile: Tile) {
// this can take a long time, because of the unit-to-tile calculation needed, so we put it in a different thread // this can take a long time, because of the unit-to-tile calculation needed, so we put it in a different thread
// THIS PART IS REALLY ANNOYING // THIS PART IS REALLY ANNOYING
@ -277,6 +282,7 @@ class WorldMapHolder(
// and then calling the function again but without the unit that moved. // and then calling the function again but without the unit that moved.
val selectedUnit = selectedUnits.first() val selectedUnit = selectedUnits.first()
markUnitMoveTutorialComplete(selectedUnit) // not too expensive to have it repeat too often
Concurrency.run("TileToMoveTo") { Concurrency.run("TileToMoveTo") {
// these are the heavy parts, finding where we want to go // these are the heavy parts, finding where we want to go
@ -334,6 +340,7 @@ class WorldMapHolder(
} }
private fun swapMoveUnitToTargetTile(selectedUnit: MapUnit, targetTile: Tile) { private fun swapMoveUnitToTargetTile(selectedUnit: MapUnit, targetTile: Tile) {
markUnitMoveTutorialComplete(selectedUnit)
selectedUnit.movement.swapMoveToTile(targetTile) selectedUnit.movement.swapMoveToTile(targetTile)
if (selectedUnit.isExploring() || selectedUnit.isMoving()) if (selectedUnit.isExploring() || selectedUnit.isMoving())
@ -531,9 +538,6 @@ class WorldMapHolder(
if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f if (unitsThatCanMove.isEmpty()) moveHereButton.color.a = 0.5f
else { else {
moveHereButton.onActivation(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.tile) moveUnitToTargetTile(unitsThatCanMove, dto.tile)
} }
moveHereButton.keyShortcuts.add(KeyCharAndCode.TAB) moveHereButton.keyShortcuts.add(KeyCharAndCode.TAB)
@ -558,9 +562,6 @@ class WorldMapHolder(
swapWithButton.addActor(unitIcon) swapWithButton.addActor(unitIcon)
swapWithButton.onActivation(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.tile) swapMoveUnitToTargetTile(dto.unit, dto.tile)
} }
swapWithButton.keyShortcuts.add(KeyCharAndCode.TAB) swapWithButton.keyShortcuts.add(KeyCharAndCode.TAB)