From aab49e72959f7ad00d02fa6a596a42908ad628a6 Mon Sep 17 00:00:00 2001 From: OptimizedForDensity <105244635+OptimizedForDensity@users.noreply.github.com> Date: Sat, 9 Jul 2022 15:50:30 -0400 Subject: [PATCH] Fix policy uniques not being applied (#7404) --- .../logic/civilization/CivilizationInfo.kt | 1 + .../unciv/logic/civilization/PolicyManager.kt | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 8e4e2458bd..cbafaee3c7 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -810,6 +810,7 @@ class CivilizationInfo : IsPartOfGameInfoSerialization { policies.civInfo = this if (policies.adoptedPolicies.size > 0 && policies.numberOfAdoptedPolicies == 0) policies.numberOfAdoptedPolicies = policies.adoptedPolicies.count { !Policy.isBranchCompleteByName(it) } + policies.setTransients() questManager.civInfo = this questManager.setTransients() diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.kt b/core/src/com/unciv/logic/civilization/PolicyManager.kt index d66bf66a78..c332b976bc 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.kt +++ b/core/src/com/unciv/logic/civilization/PolicyManager.kt @@ -78,11 +78,6 @@ class PolicyManager : IsPartOfGameInfoSerialization { private val branches: Set get() = civInfo.gameInfo.ruleSet.policyBranches.values.toSet() - // Only instantiate a single value for all policy managers - companion object { - private val turnCountRegex by lazy { Regex("for \\[[0-9]*\\] turns") } - } - fun clone(): PolicyManager { val toReturn = PolicyManager() toReturn.numberOfAdoptedPolicies = numberOfAdoptedPolicies @@ -98,6 +93,18 @@ class PolicyManager : IsPartOfGameInfoSerialization { @Suppress("MemberVisibilityCanBePrivate") fun getPolicyByName(name: String): Policy = getRulesetPolicies()[name]!! + fun setTransients() { + for (policyName in adoptedPolicies) addPolicyToTransients( + getPolicyByName(policyName) + ) + } + + private fun addPolicyToTransients(policy: Policy) { + for (unique in policy.uniqueObjects) { + policyUniques.addUnique(unique) + } + } + fun addCulture(culture: Int) { val couldAdoptPolicyBefore = canAdoptPolicy() storedCulture += culture @@ -177,6 +184,7 @@ class PolicyManager : IsPartOfGameInfoSerialization { } adoptedPolicies.add(policy.name) + addPolicyToTransients(policy) if (!branchCompletion) { val branch = policy.branch