From ab1505800850ca633f9fec26ed09ac5ed5639699 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Sun, 3 Nov 2024 08:08:56 +0200 Subject: [PATCH] Save associated unique in UnitAction for automation / grouping - see #12393 --- core/src/com/unciv/models/UnitAction.kt | 6 ++++-- .../worldscreen/unit/actions/UnitActionsFromUniques.kt | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/models/UnitAction.kt b/core/src/com/unciv/models/UnitAction.kt index 027ffcce82..54e56c4663 100644 --- a/core/src/com/unciv/models/UnitAction.kt +++ b/core/src/com/unciv/models/UnitAction.kt @@ -2,6 +2,7 @@ package com.unciv.models import com.badlogic.gdx.scenes.scene2d.Actor import com.unciv.Constants +import com.unciv.models.ruleset.unique.Unique import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.translations.getPlaceholderParameters import com.unciv.ui.components.fonts.Fonts @@ -23,6 +24,7 @@ open class UnitAction( val title: String = type.value, val isCurrentAction: Boolean = false, val uncivSound: UncivSound = type.uncivSound, + val associatedUnique: Unique? = null, /** Action is Null if this unit *can* execute the action but *not right now* - it's embarked, out of moves, etc */ val action: (() -> Unit)? = null ) { @@ -70,7 +72,7 @@ open class UnitAction( /** Specialized [UnitAction] for upgrades * - * Transports [unitToUpgradeTo] from [creation][com.unciv.ui.screens.worldscreen.unit.actions.UnitActionsUpgrade.getUpgradeAction] + * Transports [unitToUpgradeTo] from [creation][com.unciv.ui.screens.worldscreen.unit.actions.UnitActionsUpgrade.getUpgradeActions] * to [UI][com.unciv.ui.screens.worldscreen.unit.actions.UnitActionsTable.update] */ class UpgradeUnitAction( @@ -196,6 +198,6 @@ enum class UnitActionType( val binding: KeyboardBinding = binding ?: - KeyboardBinding.values().firstOrNull { it.name == name } ?: + KeyboardBinding.entries.firstOrNull { it.name == name } ?: KeyboardBinding.None } diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt index 6a9c78ebe1..447b6424f5 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsFromUniques.kt @@ -78,6 +78,7 @@ object UnitActionsFromUniques { useFrequency = 80f, title = title, uncivSound = UncivSound.Chimes, + associatedUnique = unique, action = { // check if we would be breaking a promise val leadersPromisedNotToSettleNear = getLeadersWePromisedNotToSettleNear(unit.civ, tile) @@ -242,6 +243,7 @@ object UnitActionsFromUniques { yield( UnitAction(UnitActionType.TriggerUnique, 80f, title, + associatedUnique = unique, action = unitAction.takeIf { UnitActionModifiers.canActivateSideEffects(unit, unique) }) @@ -312,6 +314,7 @@ object UnitActionsFromUniques { unique, unit ), + associatedUnique = unique, action = { val unitTile = unit.getTile() unitTile.setImprovement(improvement.name, unit.civ, unit) @@ -393,6 +396,7 @@ object UnitActionsFromUniques { yield(UnitAction(UnitActionType.Transform, 70f, title = title, + associatedUnique = unique, action = { val oldMovement = unit.currentMovement unit.destroy()