Centralize infinity symbol (#11257)

This commit is contained in:
SomeTroglodyte
2024-03-05 22:05:41 +01:00
committed by GitHub
parent 06a675c44f
commit b5a39bbb39
5 changed files with 15 additions and 10 deletions

View File

@ -25,6 +25,7 @@ import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.ruleset.unit.BaseUnit
import com.unciv.ui.components.MayaCalendar import com.unciv.ui.components.MayaCalendar
import com.unciv.ui.components.extensions.withItem import com.unciv.ui.components.extensions.withItem
import com.unciv.ui.components.fonts.Fonts
import kotlin.math.ceil import kotlin.math.ceil
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@ -148,7 +149,7 @@ class TechManager : IsPartOfGameInfoSerialization {
val remainingCost = remainingScienceToTech(techName).toDouble() val remainingCost = remainingScienceToTech(techName).toDouble()
return when { return when {
remainingCost <= 0f -> "0" remainingCost <= 0f -> "0"
civInfo.stats.statsForNextTurn.science <= 0f -> "" civInfo.stats.statsForNextTurn.science <= 0f -> Fonts.infinity.toString()
else -> max(1, ceil(remainingCost / civInfo.stats.statsForNextTurn.science).toInt()).toString() else -> max(1, ceil(remainingCost / civInfo.stats.statsForNextTurn.science).toInt()).toString()
} }
} }

View File

@ -122,6 +122,7 @@ object Fonts {
const val greatScientist = '⚛' // U+269B 'atom' const val greatScientist = '⚛' // U+269B 'atom'
const val death = '☠' // U+2620 'skull and crossbones' const val death = '☠' // U+2620 'skull and crossbones'
const val automate = '⛏' // U+26CF 'pick' const val automate = '⛏' // U+26CF 'pick'
const val infinity = '∞' // U+221E - not in `allSymbols`, taken as-is from system font
val allSymbols = mapOf( val allSymbols = mapOf(
turn to "EmojiIcons/Turn", turn to "EmojiIcons/Turn",

View File

@ -274,11 +274,11 @@ private class CityTable(city: City, forPopup: Boolean = false) : BorderedTable(
val turnLabelText = when { val turnLabelText = when {
city.isGrowing() -> { city.isGrowing() -> {
val turnsToGrowth = city.population.getNumTurnsToNewPopulation() val turnsToGrowth = city.population.getNumTurnsToNewPopulation()
if (turnsToGrowth != null && turnsToGrowth < 100) turnsToGrowth.toString() else "" if (turnsToGrowth != null && turnsToGrowth < 100) turnsToGrowth.toString() else Fonts.infinity.toString()
} }
city.isStarving() -> { city.isStarving() -> {
val turnsToStarvation = city.population.getNumTurnsToStarvation() val turnsToStarvation = city.population.getNumTurnsToStarvation()
if (turnsToStarvation != null && turnsToStarvation < 100) turnsToStarvation.toString() else "" if (turnsToStarvation != null && turnsToStarvation < 100) turnsToStarvation.toString() else Fonts.infinity.toString()
} }
else -> "-" else -> "-"
} }
@ -360,7 +360,7 @@ private class CityTable(city: City, forPopup: Boolean = false) : BorderedTable(
if (nextTurnPercentage > 1f) nextTurnPercentage = 1f if (nextTurnPercentage > 1f) nextTurnPercentage = 1f
if (nextTurnPercentage < 0f) nextTurnPercentage = 0f if (nextTurnPercentage < 0f) nextTurnPercentage = 0f
} else { } else {
turns = "" turns = Fonts.infinity.toString()
} }
icon = ImageGetter.getConstructionPortrait(cityCurrentConstruction.name, 24f) icon = ImageGetter.getConstructionPortrait(cityCurrentConstruction.name, 24f)
} }

View File

@ -39,6 +39,7 @@ import com.unciv.ui.components.extensions.packIfNeeded
import com.unciv.ui.components.extensions.surroundWithCircle import com.unciv.ui.components.extensions.surroundWithCircle
import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toLabel
import com.unciv.ui.components.extensions.toTextButton import com.unciv.ui.components.extensions.toTextButton
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.keyShortcuts import com.unciv.ui.components.input.keyShortcuts
import com.unciv.ui.components.input.onActivation import com.unciv.ui.components.input.onActivation
@ -327,7 +328,7 @@ class CityConstructionsTable(private val cityScreen: CityScreen) {
val isFirstConstructionOfItsKind = cityConstructions.isFirstConstructionOfItsKind(constructionQueueIndex, constructionName) val isFirstConstructionOfItsKind = cityConstructions.isFirstConstructionOfItsKind(constructionQueueIndex, constructionName)
var text = constructionName.tr(true) + var text = constructionName.tr(true) +
if (constructionName in PerpetualConstruction.perpetualConstructionsMap) "\n" if (constructionName in PerpetualConstruction.perpetualConstructionsMap) "\n" + Fonts.infinity
else cityConstructions.getTurnsToConstructionString(construction, isFirstConstructionOfItsKind) else cityConstructions.getTurnsToConstructionString(construction, isFirstConstructionOfItsKind)
val constructionResource = if (construction is BaseUnit) val constructionResource = if (construction is BaseUnit)

View File

@ -9,6 +9,7 @@ import com.unciv.ui.components.extensions.colorFromRGB
import com.unciv.ui.components.extensions.setFontColor import com.unciv.ui.components.extensions.setFontColor
import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toLabel
import com.unciv.ui.components.extensions.toStringSigned import com.unciv.ui.components.extensions.toStringSigned
import com.unciv.ui.components.fonts.Fonts
import com.unciv.ui.components.input.onClick import com.unciv.ui.components.input.onClick
import com.unciv.ui.components.widgets.ScalingTableWrapper import com.unciv.ui.components.widgets.ScalingTableWrapper
import com.unciv.ui.images.ImageGetter import com.unciv.ui.images.ImageGetter
@ -124,12 +125,13 @@ internal class WorldScreenTopBarStats(topbar: WorldScreenTopBar) : ScalingTableW
private fun getCultureText(civInfo: Civilization, nextTurnStats: Stats): String { private fun getCultureText(civInfo: Civilization, nextTurnStats: Stats): String {
var cultureString = rateLabel(nextTurnStats.culture) var cultureString = rateLabel(nextTurnStats.culture)
//if (nextTurnStats.culture == 0f) return cultureString // when you start the game, you're not producing any culture // kotlin Float division by Zero produces `Float.POSITIVE_INFINITY`, not an exception
val turnsToNextPolicy = (civInfo.policies.getCultureNeededForNextPolicy() - civInfo.policies.storedCulture) / nextTurnStats.culture val turnsToNextPolicy = (civInfo.policies.getCultureNeededForNextPolicy() - civInfo.policies.storedCulture) / nextTurnStats.culture
cultureString += if (turnsToNextPolicy <= 0f) " (!)" cultureString += when {
else if (nextTurnStats.culture <= 0) " ()" turnsToNextPolicy <= 0f -> " (!)" // Can choose policy right now
else " (" + ceil(turnsToNextPolicy).toInt() + ")" nextTurnStats.culture <= 0 -> " (${Fonts.infinity})" // when you start the game, you're not producing any culture
else -> " (" + ceil(turnsToNextPolicy).toInt() + ")"
}
return cultureString return cultureString
} }