mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-30 15:30:43 -04:00
Minimap no longer adds city indicator on every update, leading to lower framerate over time
This commit is contained in:
parent
523ed10e68
commit
5553be0d67
@ -286,7 +286,6 @@ object TranslationFileWriter {
|
||||
return when (name) {
|
||||
"Buildings" -> emptyArray<Building>().javaClass
|
||||
"Difficulties" -> emptyArray<Difficulty>().javaClass
|
||||
"GreatPeopleNames" -> this.javaClass // dummy value
|
||||
"Nations" -> emptyArray<Nation>().javaClass
|
||||
"Policies" -> emptyArray<PolicyBranch>().javaClass
|
||||
"Quests" -> emptyArray<Quest>().javaClass
|
||||
|
@ -10,6 +10,7 @@ import com.unciv.UncivGame
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.ui.utils.IconCircleGroup
|
||||
import com.unciv.ui.utils.ImageGetter
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.utils.surroundWithCircle
|
||||
@ -21,6 +22,8 @@ class Minimap(val mapHolder: WorldMapHolder) : Table(){
|
||||
private val tileImages = HashMap<TileInfo, Image>()
|
||||
|
||||
init {
|
||||
isTransform = false // don't try to resize rotate etc - this table has a LOT of children so that's valuable render time!
|
||||
|
||||
var topX = 0f
|
||||
var topY = 0f
|
||||
var bottomX = 0f
|
||||
@ -65,23 +68,28 @@ class Minimap(val mapHolder: WorldMapHolder) : Table(){
|
||||
layout()
|
||||
}
|
||||
|
||||
private class CivAndImage(val civInfo: CivilizationInfo, val image: IconCircleGroup)
|
||||
private val cityIcons = HashMap<TileInfo, CivAndImage>()
|
||||
|
||||
fun update(cloneCivilization: CivilizationInfo) {
|
||||
for(tileInfo in mapHolder.tileMap.values) {
|
||||
val hex = tileImages[tileInfo]!!
|
||||
if (!(UncivGame.Current.viewEntireMapForDebug || cloneCivilization.exploredTiles.contains(tileInfo.position)))
|
||||
hex.color = Color.DARK_GRAY
|
||||
else if (tileInfo.isCityCenter() && !tileInfo.isWater)
|
||||
hex.color = tileInfo.getOwner()!!.nation.getInnerColor()
|
||||
else if (tileInfo.getCity() != null && !tileInfo.isWater)
|
||||
hex.color = tileInfo.getOwner()!!.nation.getOuterColor()
|
||||
else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f)
|
||||
if (tileInfo.isCityCenter() && cloneCivilization.exploredTiles.contains(tileInfo.getCity()!!.getCenterTile().position)) {
|
||||
val nationIcon= ImageGetter.getNationIndicator(tileInfo.owningCity!!.civInfo.nation,hex.width * 3)
|
||||
for((tileInfo, hex) in tileImages) {
|
||||
hex.color = when {
|
||||
!(UncivGame.Current.viewEntireMapForDebug || cloneCivilization.exploredTiles.contains(tileInfo.position)) -> Color.DARK_GRAY
|
||||
tileInfo.isCityCenter() && !tileInfo.isWater -> tileInfo.getOwner()!!.nation.getInnerColor()
|
||||
tileInfo.getCity() != null && !tileInfo.isWater -> tileInfo.getOwner()!!.nation.getOuterColor()
|
||||
else -> tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f)
|
||||
}
|
||||
|
||||
if (tileInfo.isCityCenter() && cloneCivilization.exploredTiles.contains(tileInfo.position)
|
||||
&& (!cityIcons.containsKey(tileInfo) || cityIcons[tileInfo]!!.civInfo != tileInfo.getOwner())) {
|
||||
if (cityIcons.containsKey(tileInfo)) cityIcons[tileInfo]!!.image.remove() // city changed hands - remove old icon
|
||||
val nationIcon= ImageGetter.getNationIndicator(tileInfo.getOwner()!!.nation,hex.width * 3)
|
||||
nationIcon.setPosition(hex.x - nationIcon.width/3,hex.y - nationIcon.height/3)
|
||||
nationIcon.onClick {
|
||||
mapHolder.setCenterPosition(tileInfo.position)
|
||||
}
|
||||
allTiles.addActor(nationIcon)
|
||||
cityIcons[tileInfo] = CivAndImage(tileInfo.getOwner()!!, nationIcon)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ class IdleUnitButton (
|
||||
|
||||
init {
|
||||
val imageSize = 25f
|
||||
if(!previous){
|
||||
image.setSize(imageSize,imageSize)
|
||||
if(!previous) {
|
||||
image.setSize(imageSize, imageSize)
|
||||
image.setOrigin(Align.center)
|
||||
image.rotateBy(180f)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user