From 8d3b0b09e9755fb3e671b9701aa0c928c2fb818c Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 24 Aug 2020 14:54:27 +0300 Subject: [PATCH] Tech picker screen auto-handles eras of different lengths --- .../unciv/ui/pickerscreens/TechPickerScreen.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt index fd6d29869f..f0c37ebcee 100644 --- a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt @@ -14,6 +14,7 @@ import com.unciv.models.ruleset.tech.Technology import com.unciv.models.translations.tr import com.unciv.ui.utils.* import java.util.* +import kotlin.collections.ArrayList class TechPickerScreen(internal val civInfo: CivilizationInfo, centerOnTech: Technology? = null) : PickerScreen() { @@ -99,11 +100,19 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo, centerOnTech: Tec techMatrix[technology.column!!.columnNumber][technology.row - 1] = technology } - val erasName = allTechs.map { it.era() }.distinct() - for ((i, eraName) in erasName.withIndex()) { - val columnSpan = if (eraName != Constants.ancientEra && eraName != Constants.futureEra) 2 else 3 + val erasNamesToColumns = LinkedHashMap>() + for(tech in allTechs) { + val era = tech.era() + if (!erasNamesToColumns.containsKey(era)) erasNamesToColumns[era] = ArrayList() + val columnNumber = tech.column!!.columnNumber + if (!erasNamesToColumns[era]!!.contains(columnNumber)) erasNamesToColumns[era]!!.add(columnNumber) + } + var i=0 + for ((era, columns) in erasNamesToColumns) { + val columnSpan = columns.size val color = if (i % 2 == 0) Color.BLUE else Color.FIREBRICK - techTable.add(eraName.toLabel().addBorder(2f, color)).fill().colspan(columnSpan) + i++ + techTable.add(era.toLabel().addBorder(2f, color)).fill().colspan(columnSpan) } for (i in 0..9) {