From 51583ab588efea13707d9fac510d82331613d4ab Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 17 Jun 2023 23:59:42 +0300 Subject: [PATCH] Performance improvements - forCivGetMatchingUniques doesn't toString stateForConditionals if the result would anyway not be cached --- core/src/com/unciv/models/ruleset/unique/Unique.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index a18fb40159..733bc764a4 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -316,7 +316,7 @@ class LocalUniqueCache(val cache:Boolean = true) { val stateForConditionals = if (ignoreConditionals) StateForConditionals.IgnoreConditionals else StateForConditionals(city.civ, city) return get( - "city-${city.id}-${uniqueType.name}-${stateForConditionals}", + "city-${city.id}-${uniqueType.name}-${ignoreConditionals}", city.getMatchingUniques(uniqueType, stateForConditionals) ) } @@ -328,9 +328,11 @@ class LocalUniqueCache(val cache:Boolean = true) { civ ) ): Sequence { + val sequence = civ.getMatchingUniques(uniqueType, stateForConditionals) + if (!cache) return sequence // So we don't need to toString the stateForConditionals return get( "civ-${civ.civName}-${uniqueType.name}-${stateForConditionals}", - civ.getMatchingUniques(uniqueType, stateForConditionals) + sequence ) }