mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -04:00
Resolves #12307 - Unit icon falls back to UnitTypeIcons/<unitType> successfully
This commit is contained in:
parent
9497c17b8d
commit
e0864bebf0
@ -57,7 +57,7 @@ class Notification() : IsPartOfGameInfoSerialization, Json.Serializable {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun safeValueOf(name: String): NotificationCategory? =
|
fun safeValueOf(name: String): NotificationCategory? =
|
||||||
values().firstOrNull { it.name == name }
|
entries.firstOrNull { it.name == name }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ class Notification() : IsPartOfGameInfoSerialization, Json.Serializable {
|
|||||||
ruleset.nations.containsKey(icon) ->
|
ruleset.nations.containsKey(icon) ->
|
||||||
ImageGetter.getNationPortrait(ruleset.nations[icon]!!, iconSize)
|
ImageGetter.getNationPortrait(ruleset.nations[icon]!!, iconSize)
|
||||||
ruleset.units.containsKey(icon) ->
|
ruleset.units.containsKey(icon) ->
|
||||||
ImageGetter.getUnitIcon(icon)
|
ImageGetter.getUnitIcon(ruleset.units[icon]!!)
|
||||||
else ->
|
else ->
|
||||||
ImageGetter.getImage(icon)
|
ImageGetter.getImage(icon)
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ private class FlagBackground(drawable: TextureRegionDrawable, size: Float) : Ima
|
|||||||
class UnitIconGroup(val unit: MapUnit, val size: Float) : Group() {
|
class UnitIconGroup(val unit: MapUnit, val size: Float) : Group() {
|
||||||
var actionGroup: Group? = null
|
var actionGroup: Group? = null
|
||||||
|
|
||||||
private val flagIcon = ImageGetter.getUnitIcon(unit.name, unit.civ.nation.getInnerColor())
|
private val flagIcon = ImageGetter.getUnitIcon(unit.baseUnit, unit.civ.nation.getInnerColor())
|
||||||
private var flagBg: FlagBackground = FlagBackground(getBackgroundDrawableForUnit(), size)
|
private var flagBg: FlagBackground = FlagBackground(getBackgroundDrawableForUnit(), size)
|
||||||
private var flagSelection: Image = getBackgroundSelectionForUnit()
|
private var flagSelection: Image = getBackgroundSelectionForUnit()
|
||||||
private var flagMask: Image? = getBackgroundMaskForUnit()
|
private var flagMask: Image? = getBackgroundMaskForUnit()
|
||||||
|
@ -22,6 +22,7 @@ import com.unciv.json.json
|
|||||||
import com.unciv.models.ruleset.PerpetualConstruction
|
import com.unciv.models.ruleset.PerpetualConstruction
|
||||||
import com.unciv.models.ruleset.Ruleset
|
import com.unciv.models.ruleset.Ruleset
|
||||||
import com.unciv.models.ruleset.nation.Nation
|
import com.unciv.models.ruleset.nation.Nation
|
||||||
|
import com.unciv.models.ruleset.unit.BaseUnit
|
||||||
import com.unciv.models.skins.SkinCache
|
import com.unciv.models.skins.SkinCache
|
||||||
import com.unciv.models.tilesets.TileSetCache
|
import com.unciv.models.tilesets.TileSetCache
|
||||||
import com.unciv.ui.components.extensions.center
|
import com.unciv.ui.components.extensions.center
|
||||||
@ -249,10 +250,10 @@ object ImageGetter {
|
|||||||
|
|
||||||
fun getRandomNationPortrait(size: Float): Portrait = PortraitNation(Constants.random, size)
|
fun getRandomNationPortrait(size: Float): Portrait = PortraitNation(Constants.random, size)
|
||||||
|
|
||||||
fun getUnitIcon(unitName: String, color: Color = Color.BLACK): Image =
|
fun getUnitIcon(unit: BaseUnit, color: Color = Color.BLACK): Image =
|
||||||
if (imageExists("UnitIcons/$unitName"))
|
if (imageExists("UnitIcons/${unit.name}"))
|
||||||
getImage("UnitIcons/$unitName").apply { this.color = color }
|
getImage("UnitIcons/${unit.name}").apply { this.color = color }
|
||||||
else getImage("UnitTypeIcons/$unitName").apply { this.color = color }
|
else getImage("UnitTypeIcons/${unit.type}").apply { this.color = color }
|
||||||
|
|
||||||
fun getConstructionPortrait(construction: String, size: Float): Group {
|
fun getConstructionPortrait(construction: String, size: Float): Group {
|
||||||
if (ruleset.buildings.containsKey(construction)) {
|
if (ruleset.buildings.containsKey(construction)) {
|
||||||
|
@ -7,25 +7,14 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||||
import com.badlogic.gdx.utils.Align
|
import com.badlogic.gdx.utils.Align
|
||||||
import com.unciv.Constants
|
import com.unciv.Constants
|
||||||
import com.unciv.UncivGame
|
import com.unciv.logic.city.*
|
||||||
import com.unciv.logic.city.City
|
|
||||||
import com.unciv.logic.city.CityFlags
|
|
||||||
import com.unciv.logic.city.CityFocus
|
|
||||||
import com.unciv.logic.city.CityResources
|
|
||||||
import com.unciv.logic.city.GreatPersonPointsBreakdown
|
|
||||||
import com.unciv.models.Counter
|
import com.unciv.models.Counter
|
||||||
import com.unciv.models.ruleset.Building
|
import com.unciv.models.ruleset.Building
|
||||||
import com.unciv.models.ruleset.tile.TileResource
|
import com.unciv.models.ruleset.tile.TileResource
|
||||||
import com.unciv.models.ruleset.unique.UniqueType
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
import com.unciv.models.stats.Stat
|
import com.unciv.models.stats.Stat
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
import com.unciv.ui.components.extensions.addSeparator
|
import com.unciv.ui.components.extensions.*
|
||||||
import com.unciv.ui.components.extensions.center
|
|
||||||
import com.unciv.ui.components.extensions.colorFromRGB
|
|
||||||
import com.unciv.ui.components.extensions.surroundWithCircle
|
|
||||||
import com.unciv.ui.components.extensions.toGroup
|
|
||||||
import com.unciv.ui.components.extensions.toLabel
|
|
||||||
import com.unciv.ui.components.extensions.toTextButton
|
|
||||||
import com.unciv.ui.components.fonts.Fonts
|
import com.unciv.ui.components.fonts.Fonts
|
||||||
import com.unciv.ui.components.input.KeyboardBinding
|
import com.unciv.ui.components.input.KeyboardBinding
|
||||||
import com.unciv.ui.components.input.onActivation
|
import com.unciv.ui.components.input.onActivation
|
||||||
@ -33,7 +22,6 @@ import com.unciv.ui.components.input.onClick
|
|||||||
import com.unciv.ui.components.widgets.ExpanderTab
|
import com.unciv.ui.components.widgets.ExpanderTab
|
||||||
import com.unciv.ui.images.ImageGetter
|
import com.unciv.ui.images.ImageGetter
|
||||||
import com.unciv.ui.screens.basescreen.BaseScreen
|
import com.unciv.ui.screens.basescreen.BaseScreen
|
||||||
import com.unciv.ui.screens.civilopediascreen.CivilopediaScreen
|
|
||||||
import kotlin.math.ceil
|
import kotlin.math.ceil
|
||||||
import kotlin.math.round
|
import kotlin.math.round
|
||||||
import com.unciv.ui.components.widgets.AutoScrollPane as ScrollPane
|
import com.unciv.ui.components.widgets.AutoScrollPane as ScrollPane
|
||||||
@ -364,7 +352,8 @@ class CityStatsTable(private val cityScreen: CityScreen) : Table() {
|
|||||||
|
|
||||||
val info = Table()
|
val info = Table()
|
||||||
|
|
||||||
info.add(ImageGetter.getUnitIcon(greatPersonName, Color.GOLD).toGroup(20f))
|
val greatPerson = city.getRuleset().units[greatPersonName] ?: continue
|
||||||
|
info.add(ImageGetter.getUnitIcon(greatPerson, Color.GOLD).toGroup(20f))
|
||||||
.left().padBottom(4f).padRight(5f)
|
.left().padBottom(4f).padRight(5f)
|
||||||
info.add("{$greatPersonName} (+$gppPerTurn)".toLabel(hideIcons = true)).left().padBottom(4f).expandX().row()
|
info.add("{$greatPersonName} (+$gppPerTurn)".toLabel(hideIcons = true)).left().padBottom(4f).expandX().row()
|
||||||
|
|
||||||
|
@ -137,7 +137,8 @@ class SpecialistAllocationTable(private val cityScreen: CityScreen) : Table(Base
|
|||||||
// greatPersonPoints is a Counter so iteration order is potentially random:
|
// greatPersonPoints is a Counter so iteration order is potentially random:
|
||||||
// Sort by unit name without collator to ensure consistency in those rare mods where one Specialist gives points to several GP counters
|
// Sort by unit name without collator to ensure consistency in those rare mods where one Specialist gives points to several GP counters
|
||||||
for ((gpName, gpPoints) in specialist.greatPersonPoints.asSequence().sortedBy { it.key }) {
|
for ((gpName, gpPoints) in specialist.greatPersonPoints.asSequence().sortedBy { it.key }) {
|
||||||
addWrapping(gpPoints, Color.GOLD, ImageGetter.getUnitIcon(gpName, Color.GOLD))
|
val greatPerson = city.getRuleset().units[gpName] ?: continue
|
||||||
|
addWrapping(gpPoints, Color.GOLD, ImageGetter.getUnitIcon(greatPerson, Color.GOLD))
|
||||||
}
|
}
|
||||||
|
|
||||||
// This uses Stats.iterator() which ensures consistent Stat order and returns no zero value
|
// This uses Stats.iterator() which ensures consistent Stat order and returns no zero value
|
||||||
|
@ -38,7 +38,7 @@ enum class CityOverviewTabColumn : ISortableGridContentProvider<City, EmpireOver
|
|||||||
override val defaultSort get() = SortableGrid.SortDirection.Ascending
|
override val defaultSort get() = SortableGrid.SortDirection.Ascending
|
||||||
override fun getComparator() = compareBy<City, String>(collator) { it.name.tr(hideIcons = true) }
|
override fun getComparator() = compareBy<City, String>(collator) { it.name.tr(hideIcons = true) }
|
||||||
override fun getHeaderActor(iconSize: Float) =
|
override fun getHeaderActor(iconSize: Float) =
|
||||||
ImageGetter.getUnitIcon("Settler")
|
ImageGetter.getImage("UnitIcons/Settler").apply { color = Color.BLACK }
|
||||||
.surroundWithCircle(iconSize)
|
.surroundWithCircle(iconSize)
|
||||||
override fun getEntryValue(item: City) = 0 // make sure that `stat!!` in the super isn't used
|
override fun getEntryValue(item: City) = 0 // make sure that `stat!!` in the super isn't used
|
||||||
override fun getEntryActor(item: City, iconSize: Float, actionContext: EmpireOverviewScreen) =
|
override fun getEntryActor(item: City, iconSize: Float, actionContext: EmpireOverviewScreen) =
|
||||||
|
@ -73,7 +73,7 @@ open class UnitOverviewTabHelpers {
|
|||||||
val enable = canEnable && unitAction.action != null
|
val enable = canEnable && unitAction.action != null
|
||||||
val unitToUpgradeTo = (unitAction as UpgradeUnitAction).unitToUpgradeTo
|
val unitToUpgradeTo = (unitAction as UpgradeUnitAction).unitToUpgradeTo
|
||||||
val selectKey = getUnitIdentifier(unit, unitToUpgradeTo)
|
val selectKey = getUnitIdentifier(unit, unitToUpgradeTo)
|
||||||
val upgradeIcon = ImageGetter.getUnitIcon(unitToUpgradeTo.name,
|
val upgradeIcon = ImageGetter.getUnitIcon(unitToUpgradeTo,
|
||||||
if (enable) Color.GREEN else Color.GREEN.darken(0.5f))
|
if (enable) Color.GREEN else Color.GREEN.darken(0.5f))
|
||||||
upgradeIcon.onClick {
|
upgradeIcon.onClick {
|
||||||
UnitUpgradeMenu(actionContext.overviewScreen.stage, upgradeIcon, unit, unitAction, enable) {
|
UnitUpgradeMenu(actionContext.overviewScreen.stage, upgradeIcon, unit, unitAction, enable) {
|
||||||
|
@ -24,7 +24,7 @@ class GreatPersonPickerScreen(val worldScreen: WorldScreen, val civInfo: Civiliz
|
|||||||
|
|
||||||
for (unit in greatPersonUnits) {
|
for (unit in greatPersonUnits) {
|
||||||
val button =
|
val button =
|
||||||
PickerPane.getPickerOptionButton(ImageGetter.getUnitIcon(unit.name), unit.name)
|
PickerPane.getPickerOptionButton(ImageGetter.getUnitIcon(unit), unit.name)
|
||||||
button.pack()
|
button.pack()
|
||||||
button.isEnabled = !useMayaLongCount || unit.name in civInfo.greatPeople.longCountGPPool
|
button.isEnabled = !useMayaLongCount || unit.name in civInfo.greatPeople.longCountGPPool
|
||||||
if (button.isEnabled) {
|
if (button.isEnabled) {
|
||||||
|
@ -12,7 +12,7 @@ class UnitRenamePopup(val screen: BaseScreen, val unit: MapUnit, val actionOnClo
|
|||||||
AskTextPopup(
|
AskTextPopup(
|
||||||
screen,
|
screen,
|
||||||
label = "Choose name for [${unit.baseUnit.name}]",
|
label = "Choose name for [${unit.baseUnit.name}]",
|
||||||
icon = ImageGetter.getUnitIcon(unit.name).surroundWithCircle(80f),
|
icon = ImageGetter.getUnitIcon(unit.baseUnit).surroundWithCircle(80f),
|
||||||
defaultText = unit.instanceName ?: unit.baseUnit.name.tr(hideIcons = true),
|
defaultText = unit.instanceName ?: unit.baseUnit.name.tr(hideIcons = true),
|
||||||
validate = { it != unit.name },
|
validate = { it != unit.name },
|
||||||
actionOnOk = { userInput ->
|
actionOnOk = { userInput ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user