mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-13 09:18:43 +07:00
Fix translated sorting (#9563)
* Fix translated sorting * Minor linting, missing pedia icon, missing tooltip template * Wiki on icons for Beliefs
This commit is contained in:
BIN
android/Images.ReligionIcons/ReligionIcons/Religions.png
Normal file
BIN
android/Images.ReligionIcons/ReligionIcons/Religions.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
@ -81,6 +81,13 @@ ReligionIcons/Religion
|
|||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
|
ReligionIcons/Religions
|
||||||
|
rotate: false
|
||||||
|
xy: 1084, 4
|
||||||
|
size: 100, 100
|
||||||
|
orig: 100, 100
|
||||||
|
offset: 0, 0
|
||||||
|
index: -1
|
||||||
ReligionIcons/Shinto
|
ReligionIcons/Shinto
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1192, 4
|
xy: 1192, 4
|
||||||
|
@ -1384,6 +1384,7 @@ Allied with [civName] =
|
|||||||
Civilization Info =
|
Civilization Info =
|
||||||
Relations =
|
Relations =
|
||||||
Trade request =
|
Trade request =
|
||||||
|
Garrisoned by unit =
|
||||||
|
|
||||||
# Victory
|
# Victory
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ class DiplomacyFunctions(val civInfo: Civilization){
|
|||||||
}
|
}
|
||||||
.sortedWith(
|
.sortedWith(
|
||||||
compareByDescending<Civilization> { it.isMajorCiv() }
|
compareByDescending<Civilization> { it.isMajorCiv() }
|
||||||
.thenBy (UncivGame.Current.settings.getCollatorFromLocale()) { it.civName.tr() }
|
.thenBy (UncivGame.Current.settings.getCollatorFromLocale()) { it.civName.tr(hideIcons = true) }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class Belief() : RulesetObject() {
|
|||||||
name = "Religions"
|
name = "Religions"
|
||||||
val lines = ArrayList<FormattedLine>()
|
val lines = ArrayList<FormattedLine>()
|
||||||
lines += FormattedLine(separator = true)
|
lines += FormattedLine(separator = true)
|
||||||
ruleset.religions.sortedWith(compareBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.tr() }).forEach {
|
ruleset.religions.sortedWith(compareBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.tr(hideIcons = true) }).forEach {
|
||||||
lines += FormattedLine(it, icon = "Belief/$it")
|
lines += FormattedLine(it, icon = "Belief/$it")
|
||||||
}
|
}
|
||||||
civilopediaText = lines
|
civilopediaText = lines
|
||||||
|
@ -274,13 +274,11 @@ object ImageGetter {
|
|||||||
|
|
||||||
fun getReligionIcon(iconName: String): Image { return getImage("ReligionIcons/$iconName") }
|
fun getReligionIcon(iconName: String): Image { return getImage("ReligionIcons/$iconName") }
|
||||||
fun getReligionPortrait(iconName: String, size: Float): Portrait {
|
fun getReligionPortrait(iconName: String, size: Float): Portrait {
|
||||||
if (religionIconExists(iconName)) {
|
if (religionIconExists(iconName))
|
||||||
return PortraitReligion(iconName, size)
|
return PortraitReligion(iconName, size)
|
||||||
} else {
|
val typeName = ruleset.beliefs[iconName]?.type?.name
|
||||||
val typeName = ruleset.beliefs[iconName]?.type?.name
|
if (typeName != null && religionIconExists(typeName))
|
||||||
if (typeName != null && religionIconExists(typeName))
|
return PortraitReligion(typeName, size)
|
||||||
return PortraitReligion(typeName, size)
|
|
||||||
}
|
|
||||||
return PortraitReligion(iconName, size)
|
return PortraitReligion(iconName, size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@ import com.unciv.ui.components.AutoScrollPane as ScrollPane
|
|||||||
* When [selectCiv] and [selectTrade] are supplied, that Trade for that Civilization is selected, used for the counter-offer option from `TradePopup`.
|
* When [selectCiv] and [selectTrade] are supplied, that Trade for that Civilization is selected, used for the counter-offer option from `TradePopup`.
|
||||||
* Note calling this with [selectCiv] a City State and [selectTrade] supplied is **not allowed**.
|
* Note calling this with [selectCiv] a City State and [selectTrade] supplied is **not allowed**.
|
||||||
*/
|
*/
|
||||||
@Suppress("KDocUnresolvedReference") // Mentioning non-field parameters is flagged, but they work anyway
|
|
||||||
class DiplomacyScreen(
|
class DiplomacyScreen(
|
||||||
private val viewingCiv: Civilization,
|
private val viewingCiv: Civilization,
|
||||||
private val selectCiv: Civilization? = null,
|
private val selectCiv: Civilization? = null,
|
||||||
|
@ -304,7 +304,7 @@ class MapEditorEditStartsTab(
|
|||||||
private fun allowedNations() = ruleset.nations.values.asSequence()
|
private fun allowedNations() = ruleset.nations.values.asSequence()
|
||||||
.filter { it.name !in disallowNations && !it.hasUnique(UniqueType.CityStateDeprecated) }
|
.filter { it.name !in disallowNations && !it.hasUnique(UniqueType.CityStateDeprecated) }
|
||||||
private fun getNations() = allowedNations()
|
private fun getNations() = allowedNations()
|
||||||
.sortedWith(compareBy<Nation>{ it.isCityState }.thenBy(collator) { it.name.tr() })
|
.sortedWith(compareBy<Nation>{ it.isCityState }.thenBy(collator) { it.name.tr(hideIcons = true) })
|
||||||
.map { FormattedLine("[${it.name}] starting location", it.name, "Nation/${it.name}", size = 24) }
|
.map { FormattedLine("[${it.name}] starting location", it.name, "Nation/${it.name}", size = 24) }
|
||||||
.asIterable()
|
.asIterable()
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ class MapEditorViewTab(
|
|||||||
naturalWonders.clear()
|
naturalWonders.clear()
|
||||||
tileMap.values.asSequence()
|
tileMap.values.asSequence()
|
||||||
.mapNotNull { it.naturalWonder }
|
.mapNotNull { it.naturalWonder }
|
||||||
.sortedWith(compareBy(collator) { it.tr() })
|
.sortedWith(compareBy(collator) { it.tr(hideIcons = true) })
|
||||||
.forEach {
|
.forEach {
|
||||||
naturalWonders.add(it, 1)
|
naturalWonders.add(it, 1)
|
||||||
}
|
}
|
||||||
@ -260,11 +260,11 @@ class MapEditorViewTab(
|
|||||||
startingLocationsByNation.asSequence()
|
startingLocationsByNation.asSequence()
|
||||||
.filter { tile == null || tile in it.value }
|
.filter { tile == null || tile in it.value }
|
||||||
.mapNotNull { ruleset!!.nations[it.key] }
|
.mapNotNull { ruleset!!.nations[it.key] }
|
||||||
.sortedWith(compareBy<Nation>{ it.isCityState }.thenBy(collator) { it.name.tr() })
|
.sortedWith(compareBy<Nation>{ it.isCityState }.thenBy(collator) { it.name.tr(hideIcons = true) })
|
||||||
|
|
||||||
private fun TileMap.getStartingLocationSummary() =
|
private fun TileMap.getStartingLocationSummary() =
|
||||||
startingLocationsByNation.asSequence()
|
startingLocationsByNation.asSequence()
|
||||||
.mapNotNull { if (it.key in ruleset!!.nations) ruleset!!.nations[it.key]!! to it.value.size else null }
|
.mapNotNull { if (it.key in ruleset!!.nations) ruleset!!.nations[it.key]!! to it.value.size else null }
|
||||||
.sortedWith(compareBy<Pair<Nation,Int>>{ it.first.isCityState }.thenBy(collator) { it.first.name.tr() })
|
.sortedWith(compareBy<Pair<Nation,Int>>{ it.first.isCityState }.thenBy(collator) { it.first.name.tr(hideIcons = true) })
|
||||||
.map { it.first.name to it.second }
|
.map { it.first.name to it.second }
|
||||||
}
|
}
|
||||||
|
@ -516,7 +516,7 @@ private class RandomNationPickerPopup(
|
|||||||
init {
|
init {
|
||||||
val sortedNations = previousScreen.ruleset.nations.values
|
val sortedNations = previousScreen.ruleset.nations.values
|
||||||
.filter { it.isMajorCiv }
|
.filter { it.isMajorCiv }
|
||||||
.sortedWith(compareBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.name.tr() })
|
.sortedWith(compareBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.name.tr(hideIcons = true) })
|
||||||
allNationTables = ArrayList(
|
allNationTables = ArrayList(
|
||||||
sortedNations.map { NationTable(it, civBlocksWidth, 0f) } // no need for min height
|
sortedNations.map { NationTable(it, civBlocksWidth, 0f) } // no need for min height
|
||||||
)
|
)
|
||||||
|
@ -119,15 +119,15 @@ class CityOverviewTab(
|
|||||||
|
|
||||||
private fun getComparator() = Comparator { city2: City, city1: City ->
|
private fun getComparator() = Comparator { city2: City, city1: City ->
|
||||||
when(persistableData.sortedBy) {
|
when(persistableData.sortedBy) {
|
||||||
CITY -> collator.compare(city2.name.tr(), city1.name.tr())
|
CITY -> collator.compare(city2.name.tr(hideIcons = true), city1.name.tr(hideIcons = true))
|
||||||
CONSTRUCTION -> collator.compare(
|
CONSTRUCTION -> collator.compare(
|
||||||
city2.cityConstructions.currentConstructionFromQueue.tr(),
|
city2.cityConstructions.currentConstructionFromQueue.tr(hideIcons = true),
|
||||||
city1.cityConstructions.currentConstructionFromQueue.tr())
|
city1.cityConstructions.currentConstructionFromQueue.tr(hideIcons = true))
|
||||||
"Population" -> city2.population.population - city1.population.population
|
"Population" -> city2.population.population - city1.population.population
|
||||||
WLTK -> city2.isWeLoveTheKingDayActive().compareTo(city1.isWeLoveTheKingDayActive())
|
WLTK -> city2.isWeLoveTheKingDayActive().compareTo(city1.isWeLoveTheKingDayActive())
|
||||||
GARRISON -> collator.compare(
|
GARRISON -> collator.compare(
|
||||||
city2.getGarrison()?.name?.tr() ?: "",
|
city2.getGarrison()?.name?.tr(hideIcons = true) ?: "",
|
||||||
city1.getGarrison()?.name?.tr() ?: "",
|
city1.getGarrison()?.name?.tr(hideIcons = true) ?: "",
|
||||||
)
|
)
|
||||||
else -> {
|
else -> {
|
||||||
val stat = Stat.safeValueOf(persistableData.sortedBy)!!
|
val stat = Stat.safeValueOf(persistableData.sortedBy)!!
|
||||||
|
@ -128,9 +128,9 @@ class EspionageOverviewScreen(val civInfo: Civilization) : PickerScreen(true) {
|
|||||||
}.thenBy {
|
}.thenBy {
|
||||||
it.civ.isCityState()
|
it.civ.isCityState()
|
||||||
}.thenBy(collator) {
|
}.thenBy(collator) {
|
||||||
it.civ.civName.tr()
|
it.civ.civName.tr(hideIcons = true)
|
||||||
}.thenBy(collator) {
|
}.thenBy(collator) {
|
||||||
it.name.tr()
|
it.name.tr(hideIcons = true)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for (city in sortedCities) {
|
for (city in sortedCities) {
|
||||||
|
@ -66,7 +66,7 @@ class ResourcesOverviewTab(
|
|||||||
.distinct()
|
.distinct()
|
||||||
.sortedWith(
|
.sortedWith(
|
||||||
compareBy<TileResource> { it.resourceType }
|
compareBy<TileResource> { it.resourceType }
|
||||||
.thenBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.name.tr() }
|
.thenBy(UncivGame.Current.settings.getCollatorFromLocale()) { it.name.tr(hideIcons = true) }
|
||||||
)
|
)
|
||||||
.toList()
|
.toList()
|
||||||
private val origins: List<String> = resourceDrilldown.asSequence()
|
private val origins: List<String> = resourceDrilldown.asSequence()
|
||||||
|
@ -184,7 +184,7 @@ class WonderInfo {
|
|||||||
ruleSet.buildings.values.asSequence()
|
ruleSet.buildings.values.asSequence()
|
||||||
.filter { it.isWonder }
|
.filter { it.isWonder }
|
||||||
// 100 is so wonders with no era get displayed after all eras, not before
|
// 100 is so wonders with no era get displayed after all eras, not before
|
||||||
.sortedWith(compareBy<Building> { wonderEraMap[it.name]?.eraNumber ?: 100 }.thenBy(collator) { it.name.tr() })
|
.sortedWith(compareBy<Building> { wonderEraMap[it.name]?.eraNumber ?: 100 }.thenBy(collator) { it.name.tr(hideIcons = true) })
|
||||||
.withIndex()
|
.withIndex()
|
||||||
.associate { it.index to it.value.name }
|
.associate { it.index to it.value.name }
|
||||||
val wonderCount = allWonderMap.size
|
val wonderCount = allWonderMap.size
|
||||||
|
@ -62,6 +62,11 @@ For example, [here](https://github.com/vegeta1k95/Civ-5-Icons) is mod showing ho
|
|||||||
The Unit Types as defined in [UnitTypes.json](../Other/Unit-related-JSON-files#unittypesjson) have no icons in the base game, but Civilopedia can decorate their entries if you supply images named 'Images/UnitTypeIcons/<UnitType>.png'.
|
The Unit Types as defined in [UnitTypes.json](../Other/Unit-related-JSON-files#unittypesjson) have no icons in the base game, but Civilopedia can decorate their entries if you supply images named 'Images/UnitTypeIcons/<UnitType>.png'.
|
||||||
(while you're at it, you may override the default icon for the Unit Type _category header_ - it's 'UnitTypes.png' in the same folder, or the icons used for the movement domains - 'DomainLand', 'DomainWater', 'DomainAir')
|
(while you're at it, you may override the default icon for the Unit Type _category header_ - it's 'UnitTypes.png' in the same folder, or the icons used for the movement domains - 'DomainLand', 'DomainWater', 'DomainAir')
|
||||||
|
|
||||||
|
### Adding icons for Beliefs
|
||||||
|
|
||||||
|
The individual Beliefs - as opposed to Belief types, as defined in [Beliefs.json](../Other/Civilization-related-JSON-files#beliefsjson) have no icons in the base game, but Civilopedia can decorate their entries if you supply images named 'Images/ReligionIcons/<Belief>.png'.
|
||||||
|
Civilopedia falls back to the icon for the Belief type - as you can see in the base game, but individual icons have precedence if they exist.
|
||||||
|
|
||||||
## Sounds
|
## Sounds
|
||||||
|
|
||||||
Standard values are below. The sounds themselves can be found [here](/sounds).
|
Standard values are below. The sounds themselves can be found [here](/sounds).
|
||||||
|
Reference in New Issue
Block a user