mirror of
https://github.com/yairm210/Unciv.git
synced 2025-10-03 08:56:17 -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) {
|
return when (name) {
|
||||||
"Buildings" -> emptyArray<Building>().javaClass
|
"Buildings" -> emptyArray<Building>().javaClass
|
||||||
"Difficulties" -> emptyArray<Difficulty>().javaClass
|
"Difficulties" -> emptyArray<Difficulty>().javaClass
|
||||||
"GreatPeopleNames" -> this.javaClass // dummy value
|
|
||||||
"Nations" -> emptyArray<Nation>().javaClass
|
"Nations" -> emptyArray<Nation>().javaClass
|
||||||
"Policies" -> emptyArray<PolicyBranch>().javaClass
|
"Policies" -> emptyArray<PolicyBranch>().javaClass
|
||||||
"Quests" -> emptyArray<Quest>().javaClass
|
"Quests" -> emptyArray<Quest>().javaClass
|
||||||
|
@ -10,6 +10,7 @@ import com.unciv.UncivGame
|
|||||||
import com.unciv.logic.HexMath
|
import com.unciv.logic.HexMath
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.map.TileInfo
|
import com.unciv.logic.map.TileInfo
|
||||||
|
import com.unciv.ui.utils.IconCircleGroup
|
||||||
import com.unciv.ui.utils.ImageGetter
|
import com.unciv.ui.utils.ImageGetter
|
||||||
import com.unciv.ui.utils.onClick
|
import com.unciv.ui.utils.onClick
|
||||||
import com.unciv.ui.utils.surroundWithCircle
|
import com.unciv.ui.utils.surroundWithCircle
|
||||||
@ -21,6 +22,8 @@ class Minimap(val mapHolder: WorldMapHolder) : Table(){
|
|||||||
private val tileImages = HashMap<TileInfo, Image>()
|
private val tileImages = HashMap<TileInfo, Image>()
|
||||||
|
|
||||||
init {
|
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 topX = 0f
|
||||||
var topY = 0f
|
var topY = 0f
|
||||||
var bottomX = 0f
|
var bottomX = 0f
|
||||||
@ -65,23 +68,28 @@ class Minimap(val mapHolder: WorldMapHolder) : Table(){
|
|||||||
layout()
|
layout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class CivAndImage(val civInfo: CivilizationInfo, val image: IconCircleGroup)
|
||||||
|
private val cityIcons = HashMap<TileInfo, CivAndImage>()
|
||||||
|
|
||||||
fun update(cloneCivilization: CivilizationInfo) {
|
fun update(cloneCivilization: CivilizationInfo) {
|
||||||
for(tileInfo in mapHolder.tileMap.values) {
|
for((tileInfo, hex) in tileImages) {
|
||||||
val hex = tileImages[tileInfo]!!
|
hex.color = when {
|
||||||
if (!(UncivGame.Current.viewEntireMapForDebug || cloneCivilization.exploredTiles.contains(tileInfo.position)))
|
!(UncivGame.Current.viewEntireMapForDebug || cloneCivilization.exploredTiles.contains(tileInfo.position)) -> Color.DARK_GRAY
|
||||||
hex.color = Color.DARK_GRAY
|
tileInfo.isCityCenter() && !tileInfo.isWater -> tileInfo.getOwner()!!.nation.getInnerColor()
|
||||||
else if (tileInfo.isCityCenter() && !tileInfo.isWater)
|
tileInfo.getCity() != null && !tileInfo.isWater -> tileInfo.getOwner()!!.nation.getOuterColor()
|
||||||
hex.color = tileInfo.getOwner()!!.nation.getInnerColor()
|
else -> tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f)
|
||||||
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.position)
|
||||||
if (tileInfo.isCityCenter() && cloneCivilization.exploredTiles.contains(tileInfo.getCity()!!.getCenterTile().position)) {
|
&& (!cityIcons.containsKey(tileInfo) || cityIcons[tileInfo]!!.civInfo != tileInfo.getOwner())) {
|
||||||
val nationIcon= ImageGetter.getNationIndicator(tileInfo.owningCity!!.civInfo.nation,hex.width * 3)
|
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.setPosition(hex.x - nationIcon.width/3,hex.y - nationIcon.height/3)
|
||||||
nationIcon.onClick {
|
nationIcon.onClick {
|
||||||
mapHolder.setCenterPosition(tileInfo.position)
|
mapHolder.setCenterPosition(tileInfo.position)
|
||||||
}
|
}
|
||||||
allTiles.addActor(nationIcon)
|
allTiles.addActor(nationIcon)
|
||||||
|
cityIcons[tileInfo] = CivAndImage(tileInfo.getOwner()!!, nationIcon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,8 @@ class IdleUnitButton (
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
val imageSize = 25f
|
val imageSize = 25f
|
||||||
if(!previous){
|
if(!previous) {
|
||||||
image.setSize(imageSize,imageSize)
|
image.setSize(imageSize, imageSize)
|
||||||
image.setOrigin(Align.center)
|
image.setOrigin(Align.center)
|
||||||
image.rotateBy(180f)
|
image.rotateBy(180f)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user