From dbb46545f5d4160d3529a9ad242d645206788b61 Mon Sep 17 00:00:00 2001 From: WhoIsJohannes <126110113+WhoIsJohannes@users.noreply.github.com> Date: Mon, 17 Apr 2023 06:37:56 +0200 Subject: [PATCH] Fix golden age length action text (#9204) Thanks SomeTroglodyte (https://github.com/yairm210/Unciv/issues/9166#issuecomment-1503593954) --- .../civilization/managers/GoldenAgeManager.kt | 8 ++++++-- .../worldscreen/unit/actions/UnitActions.kt | 14 ++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/managers/GoldenAgeManager.kt b/core/src/com/unciv/logic/civilization/managers/GoldenAgeManager.kt index 29cc4f0609..9ec4837fa4 100644 --- a/core/src/com/unciv/logic/civilization/managers/GoldenAgeManager.kt +++ b/core/src/com/unciv/logic/civilization/managers/GoldenAgeManager.kt @@ -34,12 +34,16 @@ class GoldenAgeManager : IsPartOfGameInfoSerialization { return cost.toInt() } - fun enterGoldenAge(unmodifiedNumberOfTurns: Int = 10) { + fun calculateGoldenAgeLength(unmodifiedNumberOfTurns: Int): Int { var turnsToGoldenAge = unmodifiedNumberOfTurns.toFloat() for (unique in civInfo.getMatchingUniques(UniqueType.GoldenAgeLength)) turnsToGoldenAge *= unique.params[0].toPercent() turnsToGoldenAge *= civInfo.gameInfo.speed.goldenAgeLengthModifier - turnsLeftForCurrentGoldenAge += turnsToGoldenAge.toInt() + return turnsToGoldenAge.toInt() + } + + fun enterGoldenAge(unmodifiedNumberOfTurns: Int = 10) { + turnsLeftForCurrentGoldenAge += calculateGoldenAgeLength(unmodifiedNumberOfTurns) civInfo.addNotification("You have entered a Golden Age!", NotificationCategory.General, "StatIcons/Happiness") civInfo.popupAlerts.add(PopupAlert(AlertType.GoldenAge, "")) diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index a592b3e3f7..1bc32058dd 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -21,6 +21,7 @@ import com.unciv.models.ruleset.unique.Unique import com.unciv.models.ruleset.unique.UniqueTarget import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.ruleset.unique.UniqueType +import com.unciv.models.translations.fillPlaceholders import com.unciv.models.translations.removeConditionals import com.unciv.models.translations.tr import com.unciv.ui.components.Fonts @@ -675,9 +676,14 @@ object UnitActions { && unique.conditionals.none { it.type == UniqueType.ConditionalTimedUnique }) continue if (usagesLeft(unit, unique)==0) continue - val unitAction = UnitAction(type = UnitActionType.TriggerUnique, - title = actionTextWithSideEffects(unique.text.removeConditionals(), unique, unit) - ){ + val baseTitle = if (unique.isOfType(UniqueType.OneTimeEnterGoldenAgeTurns)) + unique.placeholderText.fillPlaceholders( + unit.civ.goldenAges.calculateGoldenAgeLength( + unique.params[0].toInt()).toString()) + else unique.text.removeConditionals() + val title = actionTextWithSideEffects(baseTitle, unique, unit) + + val unitAction = UnitAction(type = UnitActionType.TriggerUnique, title){ UniqueTriggerActivation.triggerUnitwideUnique(unique, unit) activateSideEffects(unit, unique) } @@ -758,7 +764,7 @@ object UnitActions { return null } - fun actionTextWithSideEffects(originalText:String, actionUnique: Unique, unit: MapUnit): String { + fun actionTextWithSideEffects(originalText: String, actionUnique: Unique, unit: MapUnit): String { val sideEffectString = getSideEffectString(unit, actionUnique) if (sideEffectString == "") return originalText else return "{$originalText} $sideEffectString"