Added color to civilopedia buttons per #3503

This commit is contained in:
Yair Morgenstern
2021-01-11 17:14:50 +02:00
parent 4cf42bb0bd
commit 92f203c5e3
2 changed files with 59 additions and 34 deletions

View File

@ -16,18 +16,23 @@ import kotlin.math.abs
open class TileInfo { open class TileInfo {
@Transient @Transient
lateinit var tileMap: TileMap lateinit var tileMap: TileMap
@Transient @Transient
lateinit var ruleset: Ruleset // a tile can be a tile with a ruleset, even without a map. lateinit var ruleset: Ruleset // a tile can be a tile with a ruleset, even without a map.
@Transient @Transient
var owningCity: CityInfo? = null var owningCity: CityInfo? = null
@Transient @Transient
private lateinit var baseTerrainObject: Terrain private lateinit var baseTerrainObject: Terrain
// These are for performance - checked with every tile movement and "canEnter" check, which makes them performance-critical // These are for performance - checked with every tile movement and "canEnter" check, which makes them performance-critical
@Transient @Transient
var isLand = false var isLand = false
@Transient @Transient
var isWater = false var isWater = false
@Transient @Transient
var isOcean = false var isOcean = false
@ -174,9 +179,7 @@ open class TileInfo {
return civInfo.cities.firstOrNull { it.isWorked(this) } return civInfo.cities.firstOrNull { it.isWorked(this) }
} }
fun isWorked(): Boolean { fun isWorked(): Boolean = getWorkingCity() != null
return getWorkingCity() != null
}
fun isLocked(): Boolean { fun isLocked(): Boolean {
val workingCity = getWorkingCity() val workingCity = getWorkingCity()
@ -490,7 +493,7 @@ open class TileInfo {
/** If the unit isn't in the ruleset we can't even know what type of unit this is! So check each place /** If the unit isn't in the ruleset we can't even know what type of unit this is! So check each place
* This works with no transients so can be called from gameInfo.setTransients with no fear * This works with no transients so can be called from gameInfo.setTransients with no fear
*/ */
fun removeUnit(mapUnit: MapUnit){ fun removeUnit(mapUnit: MapUnit) {
when { when {
airUnits.contains(mapUnit) -> airUnits.remove(mapUnit) airUnits.contains(mapUnit) -> airUnits.remove(mapUnit)
civilianUnit == mapUnit -> civilianUnit = null civilianUnit == mapUnit -> civilianUnit = null

View File

@ -1,5 +1,6 @@
package com.unciv.ui package com.unciv.ui
import com.badlogic.gdx.graphics.Color
import com.unciv.ui.utils.AutoScrollPane as ScrollPane import com.unciv.ui.utils.AutoScrollPane as ScrollPane
import com.badlogic.gdx.scenes.scene2d.Actor import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.ui.* import com.badlogic.gdx.scenes.scene2d.ui.*
@ -27,13 +28,17 @@ class CivilopediaScreen(ruleset: Ruleset) : CameraStageBaseScreen() {
fun select(category: String) { fun select(category: String) {
entrySelectTable.clear() entrySelectTable.clear()
for (button in categoryToButtons.values) button.color = Color.WHITE
categoryToButtons[category]!!.color = Color.BLUE
var entries = categoryToEntries[category]!! var entries = categoryToEntries[category]!!
if(category!="Difficulty levels") // this is the only case where we need them in order if (category != "Difficulty levels") // this is the only case where we need them in order
entries = entries.sortedBy { it.name.tr() } // Alphabetical order of localized names entries = entries.sortedBy { it.name.tr() } // Alphabetical order of localized names
for (entry in entries){ for (entry in entries) {
val entryButton = Button(skin) val entryButton = Button(skin)
if(entry.image!=null) if (entry.image != null)
if (category=="Terrains") if (category == "Terrains")
entryButton.add(entry.image).padRight(24f) entryButton.add(entry.image).padRight(24f)
else else
entryButton.add(entry.image).size(50f).padRight(10f) entryButton.add(entry.image).size(50f).padRight(10f)
@ -49,39 +54,57 @@ class CivilopediaScreen(ruleset: Ruleset) : CameraStageBaseScreen() {
onBackButtonClicked { UncivGame.Current.setWorldScreen() } onBackButtonClicked { UncivGame.Current.setWorldScreen() }
categoryToEntries["Buildings"] = ruleset.buildings.values categoryToEntries["Buildings"] = ruleset.buildings.values
.filter { "Will not be displayed in Civilopedia" !in it.uniques && !(it.isWonder||it.isNationalWonder) } .filter { "Will not be displayed in Civilopedia" !in it.uniques && !(it.isWonder || it.isNationalWonder) }
.map { CivilopediaEntry(it.name,it.getDescription(false, null,ruleset), .map {
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f)) } CivilopediaEntry(it.name, it.getDescription(false, null, ruleset),
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f))
}
categoryToEntries["Wonders"] = ruleset.buildings.values categoryToEntries["Wonders"] = ruleset.buildings.values
.filter { "Will not be displayed in Civilopedia" !in it.uniques && (it.isWonder||it.isNationalWonder) } .filter { "Will not be displayed in Civilopedia" !in it.uniques && (it.isWonder || it.isNationalWonder) }
.map { CivilopediaEntry(it.name,it.getDescription(false, null,ruleset), .map {
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f)) } CivilopediaEntry(it.name, it.getDescription(false, null, ruleset),
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f))
}
categoryToEntries["Resources"] = ruleset.tileResources.values categoryToEntries["Resources"] = ruleset.tileResources.values
.map { CivilopediaEntry(it.name,it.getDescription(ruleset), .map {
ImageGetter.getResourceImage(it.name,50f)) } CivilopediaEntry(it.name, it.getDescription(ruleset),
ImageGetter.getResourceImage(it.name, 50f))
}
categoryToEntries["Terrains"] = ruleset.terrains.values categoryToEntries["Terrains"] = ruleset.terrains.values
.map { CivilopediaEntry(it.name,it.getDescription(ruleset), .map {
terrainImage(it, ruleset) ) } CivilopediaEntry(it.name, it.getDescription(ruleset),
terrainImage(it, ruleset))
}
categoryToEntries["Tile Improvements"] = ruleset.tileImprovements.values categoryToEntries["Tile Improvements"] = ruleset.tileImprovements.values
.map { CivilopediaEntry(it.name,it.getDescription(ruleset,false), .map {
ImageGetter.getImprovementIcon(it.name,50f)) } CivilopediaEntry(it.name, it.getDescription(ruleset, false),
ImageGetter.getImprovementIcon(it.name, 50f))
}
categoryToEntries["Units"] = ruleset.units.values categoryToEntries["Units"] = ruleset.units.values
.filter { "Will not be displayed in Civilopedia" !in it.uniques } .filter { "Will not be displayed in Civilopedia" !in it.uniques }
.map { CivilopediaEntry(it.name,it.getDescription(false), .map {
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f)) } CivilopediaEntry(it.name, it.getDescription(false),
ImageGetter.getConstructionImage(it.name).surroundWithCircle(50f))
}
categoryToEntries["Nations"] = ruleset.nations.values categoryToEntries["Nations"] = ruleset.nations.values
.filter { it.isMajorCiv() } .filter { it.isMajorCiv() }
.map { CivilopediaEntry(it.name,it.getUniqueString(ruleset,false), .map {
ImageGetter.getNationIndicator(it,50f)) } CivilopediaEntry(it.name, it.getUniqueString(ruleset, false),
ImageGetter.getNationIndicator(it, 50f))
}
categoryToEntries["Technologies"] = ruleset.technologies.values categoryToEntries["Technologies"] = ruleset.technologies.values
.map { CivilopediaEntry(it.name,it.getDescription(ruleset), .map {
ImageGetter.getTechIconGroup(it.name,50f)) } CivilopediaEntry(it.name, it.getDescription(ruleset),
ImageGetter.getTechIconGroup(it.name, 50f))
}
categoryToEntries["Promotions"] = ruleset.unitPromotions.values categoryToEntries["Promotions"] = ruleset.unitPromotions.values
.map { CivilopediaEntry(it.name,it.getDescription(ruleset.unitPromotions.values, true, ruleset), .map {
Table().apply { add(ImageGetter.getPromotionIcon(it.name)) }) } CivilopediaEntry(it.name, it.getDescription(ruleset.unitPromotions.values, true, ruleset),
Table().apply { add(ImageGetter.getPromotionIcon(it.name)) })
}
categoryToEntries["Tutorials"] = tutorialController.getCivilopediaTutorials() categoryToEntries["Tutorials"] = tutorialController.getCivilopediaTutorials()
.map { CivilopediaEntry(it.key.replace("_"," "), it.value.joinToString("\n\n") { line -> line.tr() }) } .map { CivilopediaEntry(it.key.replace("_", " "), it.value.joinToString("\n\n") { line -> line.tr() }) }
categoryToEntries["Difficulty levels"] = ruleset.difficulties.values categoryToEntries["Difficulty levels"] = ruleset.difficulties.values
.map { CivilopediaEntry(it.name, it.getDescription()) } .map { CivilopediaEntry(it.name, it.getDescription()) }
@ -139,10 +162,10 @@ class CivilopediaScreen(ruleset: Ruleset) : CameraStageBaseScreen() {
select("Tutorials") select("Tutorials")
} }
private fun terrainImage (terrain: Terrain, ruleset: Ruleset): Actor? { private fun terrainImage(terrain: Terrain, ruleset: Ruleset): Actor? {
val tileInfo = TileInfo() val tileInfo = TileInfo()
tileInfo.ruleset = ruleset tileInfo.ruleset = ruleset
when(terrain.type) { when (terrain.type) {
TerrainType.NaturalWonder -> { TerrainType.NaturalWonder -> {
tileInfo.naturalWonder = terrain.name tileInfo.naturalWonder = terrain.name
tileInfo.baseTerrain = terrain.turnsInto ?: Constants.grassland tileInfo.baseTerrain = terrain.turnsInto ?: Constants.grassland
@ -162,4 +185,3 @@ class CivilopediaScreen(ruleset: Ruleset) : CameraStageBaseScreen() {
return group return group
} }
} }