From ba37be8641459509e2f28b1209ee4d89f8472d02 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Tue, 5 Nov 2024 08:42:29 +0200 Subject: [PATCH] perf(memory): Save unit icon location on baseunit --- core/src/com/unciv/models/ruleset/unit/BaseUnit.kt | 3 +++ core/src/com/unciv/ui/images/ImageGetter.kt | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index 130125d850..17542d8dd5 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -63,6 +63,9 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { @Transient var cachedForceEvaluation: Int = -1 + + @delegate:Transient // memory perf optimization to not create the string per unit + val unitIconLocation by lazy { "UnitIcons/$name.png" } @Transient val costFunctions = BaseUnitCost(this) diff --git a/core/src/com/unciv/ui/images/ImageGetter.kt b/core/src/com/unciv/ui/images/ImageGetter.kt index f5f877fe13..908cdb0070 100644 --- a/core/src/com/unciv/ui/images/ImageGetter.kt +++ b/core/src/com/unciv/ui/images/ImageGetter.kt @@ -251,8 +251,8 @@ object ImageGetter { fun getRandomNationPortrait(size: Float): Portrait = PortraitNation(Constants.random, size) fun getUnitIcon(unit: BaseUnit, color: Color = Color.BLACK): Image = - if (imageExists("UnitIcons/${unit.name}")) - getImage("UnitIcons/${unit.name}").apply { this.color = color } + if (imageExists(unit.unitIconLocation)) + getImage(unit.unitIconLocation).apply { this.color = color } else getImage("UnitTypeIcons/${unit.type}").apply { this.color = color } fun getConstructionPortrait(construction: String, size: Float): Group {