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 {