mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-13 17:28:57 +07:00
Added color to civilopedia buttons per #3503
This commit is contained in:
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user