From eaa0a9dbadfde7228ecc640d7b94f99fc76bf4ab Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 13 May 2019 12:14:12 +0200 Subject: [PATCH] when a unit is selected, use the ? button to read about it in the Civilopedia --- android/assets/jsons/Translations/Other.json | 11 +-- core/src/com/unciv/ui/CivilopediaScreen.kt | 69 ++++++++++--------- .../unciv/ui/worldscreen/unit/UnitTable.kt | 8 ++- 3 files changed, 48 insertions(+), 40 deletions(-) diff --git a/android/assets/jsons/Translations/Other.json b/android/assets/jsons/Translations/Other.json index 4257883623..604b409101 100644 --- a/android/assets/jsons/Translations/Other.json +++ b/android/assets/jsons/Translations/Other.json @@ -1058,7 +1058,7 @@ Russian:"Город будет расширяться между раундами [turnsToExpansion]" French:"La ville se développera entre [turnsToExpansion] tours" Romanian:"Orașul se va extinde între rundă [turnsToExpansion]" - German:"Die Stadt wird sich zwischen [turnsToExpansion]-Runden erweitern" + German:"Erweiterung in [turnsToExpansion] Runden" Dutch:"De stad breidt zich uit tussen [turnsToExpansion]-rondes" Spanish:"La ciudad se expandirá entre [turnsToExpansion] rondas" Simplified_Chinese:"这座城市将在[turnsToExpansion]回合后扩张" @@ -1084,7 +1084,7 @@ Russian:"В городе будет новый житель в раундах [turnsToPopulation]" French:"La ville aura un nouveau résident dans [turnsToPopulation]" Romanian:"Orașul va avea un nou rezident în runde [turnsToPopulation]" - German:"Die Stadt wird einen neuen Einwohner in [turnsToPopulation]-Runden haben" + German:"Neuer Einwohner in [turnsToPopulation] Runden" Dutch:"De stad krijgt een nieuwe inwoner in [turnsToPopulation]-rondes" Spanish:"La ciudad tendrá un nuevo residente en las rondas de [turnsToPopulation]" Simplified_Chinese:"这座城市将在[turnsToPopulation]轮后有1个新市民" @@ -1863,8 +1863,9 @@ } "Technologies":{ //You misses this translation, said Smashfanful - Italian:"Tecnologie" - French:"Technologies" + Italian:"Tecnologie", + German:"Technologien", + French:"Technologies", Simplified_Chinese:"科技" } @@ -3009,7 +3010,7 @@ "Terrains":{ Italian:"Terreni e caratteristiche" - German:"Gelände und Geländearten" + German:"Gelände" French:"Terrains" Simplified_Chinese:"地形" } diff --git a/core/src/com/unciv/ui/CivilopediaScreen.kt b/core/src/com/unciv/ui/CivilopediaScreen.kt index ba0936219f..a65f13844a 100644 --- a/core/src/com/unciv/ui/CivilopediaScreen.kt +++ b/core/src/com/unciv/ui/CivilopediaScreen.kt @@ -14,8 +14,32 @@ import com.unciv.ui.utils.CameraStageBaseScreen import com.unciv.ui.utils.onClick import com.unciv.ui.utils.toLabel import java.util.* +import kotlin.math.max class CivilopediaScreen : CameraStageBaseScreen() { + + val categoryToInfos = LinkedHashMap>() + val categoryToButtons = LinkedHashMap() + val civPediaEntries = Array() + + val nameList = List(skin) + val description = "".toLabel() + + fun select(category: String, entry: String? = null) { + val nameItems=Array() + civPediaEntries.clear() + for (civilopediaEntry in categoryToInfos[category]!!.sortedBy { it.toString().tr() }){ // Alphabetical order of localized names + civPediaEntries.add(civilopediaEntry) + nameItems.add(civilopediaEntry.toString().tr()) + } + nameList.setItems(nameItems) + val index = max(0, nameList.items.indexOf(entry?.tr())) + nameList.selected = nameList.items.get(index) + description.setText(civPediaEntries.get(index).description) + for (btn in categoryToButtons.values) btn.isChecked = false + categoryToButtons[category]?.isChecked = true + } + init { onBackButtonClicked { UnCivGame.Current.setWorldScreen() } val buttonTable = Table() @@ -27,8 +51,7 @@ class CivilopediaScreen : CameraStageBaseScreen() { stage.addActor(splitPane) - val label = "".toLabel() - label.setWrap(true) + description.setWrap(true) val goToGameButton = TextButton("Close".tr(), skin) goToGameButton.onClick { @@ -37,7 +60,7 @@ class CivilopediaScreen : CameraStageBaseScreen() { } buttonTable.add(goToGameButton) - val categoryToInfos = LinkedHashMap>() + val language = UnCivGame.Current.settings.language.replace(" ","_") val basicHelpFileName = if(Gdx.files.internal("jsons/BasicHelp/BasicHelp_$language.json").exists())"BasicHelp/BasicHelp_$language" @@ -51,49 +74,27 @@ class CivilopediaScreen : CameraStageBaseScreen() { categoryToInfos["Units"] = GameBasics.Units.values categoryToInfos["Technologies"] = GameBasics.Technologies.values - val nameList = List(skin) - val newArray = Array() - val nameListClickListener = { - if(nameList.selected!=null) label.setText(newArray.get(nameList.selectedIndex).description) + nameList.onClick { + if(nameList.selected!=null) description.setText(civPediaEntries.get(nameList.selectedIndex).description) } - nameList.onClick (nameListClickListener) nameList.style = List.ListStyle(nameList.style) nameList.style.fontColorSelected = Color.BLACK - val buttons = ArrayList