757fa7eeb7
* Bring Incas into the main game (also changes slinger withdraw ability to inheritable) * Update Nations.json * Re-think of the New-Installs Language Picker * Language picker and new installs - reworked how flag is cleared
89 lines
No EOL
3.1 KiB
Kotlin
89 lines
No EOL
3.1 KiB
Kotlin
package com.unciv.ui
|
|
|
|
import com.badlogic.gdx.graphics.Color
|
|
import com.badlogic.gdx.scenes.scene2d.Touchable
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
|
import com.unciv.UncivGame
|
|
import com.unciv.models.translations.tr
|
|
import com.unciv.ui.pickerscreens.PickerScreen
|
|
import com.unciv.ui.utils.ImageGetter
|
|
import com.unciv.ui.utils.enable
|
|
import com.unciv.ui.utils.onClick
|
|
import com.unciv.ui.utils.toLabel
|
|
|
|
|
|
class LanguageTable(val language:String, val percentComplete: Int):Table(){
|
|
private val blue = ImageGetter.getBlue()
|
|
private val darkBlue = blue.cpy().lerp(Color.BLACK,0.5f)!!
|
|
|
|
init{
|
|
pad(10f)
|
|
defaults().pad(10f)
|
|
if(ImageGetter.imageExists("FlagIcons/$language"))
|
|
add(ImageGetter.getImage("FlagIcons/$language")).size(40f)
|
|
|
|
val spaceSplitLang = language.replace("_"," ")
|
|
add("$spaceSplitLang ($percentComplete%)".toLabel())
|
|
update("")
|
|
touchable = Touchable.enabled // so click listener is activated when any part is clicked, not only children
|
|
pack()
|
|
}
|
|
|
|
fun update(chosenLanguage:String){
|
|
background = ImageGetter.getBackground( if(chosenLanguage==language) blue else darkBlue)
|
|
}
|
|
|
|
}
|
|
|
|
class LanguagePickerScreen: PickerScreen(){
|
|
var chosenLanguage = "English"
|
|
|
|
private val languageTables = ArrayList<LanguageTable>()
|
|
|
|
fun update(){
|
|
languageTables.forEach { it.update(chosenLanguage) }
|
|
}
|
|
|
|
init {
|
|
closeButton.isVisible = false
|
|
/// trimMargin is overhead, but easier to maintain and see when it might get trimmed without wrap:
|
|
val translationDisclaimer = """
|
|
|Please note that translations are a community-based work in progress and are INCOMPLETE!
|
|
|The percentage shown is how much of the language is translated in-game.
|
|
|If you want to help translating the game into your language,
|
|
| instructions are in the Github readme! (Menu > Community > Github)
|
|
""".trimMargin()
|
|
topTable.add(translationDisclaimer.toLabel()).pad(10f).row()
|
|
|
|
val languageCompletionPercentage = UncivGame.Current.translations
|
|
.percentCompleteOfLanguages
|
|
languageTables.addAll(languageCompletionPercentage
|
|
.map { LanguageTable(it.key,if(it.key=="English") 100 else it.value) }
|
|
.sortedByDescending { it.percentComplete} )
|
|
|
|
languageTables.forEach {
|
|
it.onClick {
|
|
chosenLanguage = it.language
|
|
rightSideButton.enable()
|
|
update()
|
|
}
|
|
topTable.add(it).pad(10f).row()
|
|
}
|
|
|
|
rightSideButton.setText("Pick language".tr())
|
|
rightSideButton.onClick {
|
|
pickLanguage()
|
|
}
|
|
}
|
|
|
|
fun pickLanguage(){
|
|
UncivGame.Current.settings.language = chosenLanguage
|
|
UncivGame.Current.settings.isFreshlyCreated = false // mark so the picker isn't called next launch
|
|
UncivGame.Current.settings.save()
|
|
|
|
UncivGame.Current.translations.tryReadTranslationForCurrentLanguage()
|
|
resetFonts()
|
|
UncivGame.Current.startNewGame()
|
|
dispose()
|
|
}
|
|
} |