Files
Terrarum/src/net/torvald/terrarum/modulebasegame/ui/UITitleLanguage.kt
2024-01-04 16:38:58 +09:00

132 lines
4.1 KiB
Kotlin

package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.App
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.serialise.WriteConfig
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextButtonList
import kotlin.math.ceil
import kotlin.math.max
class UITitleLanguage(remoCon: UIRemoCon?) : UICanvas() {
init {
handler.allowESCtoClose = false
}
val menuLabels = arrayOf(
"MENU_LABEL_RETURN"
)
private val textButtonLineHeight = 32
private val localeList = Lang.languageList.toList().sorted()
private val localeFirstHalf = localeList.subList(0, ceil(localeList.size / 2f).toInt())
private val localeSecondHalf = localeList.subList(ceil(localeList.size / 2f).toInt(), localeList.size)
override var width = 480
override var height = max(localeFirstHalf.size, localeSecondHalf.size) * textButtonLineHeight
private val textArea1 = UIItemTextButtonList(this,
textButtonLineHeight,
localeFirstHalf.map { Lang.getByLocale("MENU_LANGUAGE_THIS", it, true) ?: "!ERR: $it" }.toTypedArray(),
(Toolkit.drawWidth - width) / 2, (App.scr.height - height) / 2,
width / 2, height,
textAreaWidth = width / 2,
readFromLang = false,
activeBackCol = Color(0),
highlightBackCol = Color(0),
inactiveCol = Color.WHITE,
defaultSelection = null
)
private val textArea2 = UIItemTextButtonList(this,
textButtonLineHeight,
localeSecondHalf.map { Lang.getByLocale("MENU_LANGUAGE_THIS", it, true) ?: "!ERR: $it" }.toTypedArray(),
(Toolkit.drawWidth - width) / 2 + (width / 2), (App.scr.height - height) / 2,
width / 2, height,
textAreaWidth = width / 2,
readFromLang = false,
activeBackCol = Color(0),
highlightBackCol = Color(0),
inactiveCol = Color.WHITE,
defaultSelection = null
)
private var initialMouseBlock = true
init {
//textArea.entireText = Lang.languageList.toList().sorted().map { Lang.langpack["MENU_LANGUAGE_THIS_$it"] ?: "!ERR: $it" }
////////////////////////////
// attach listeners
textArea1.selectionChangeListener = { _, newSelectionIndex ->
App.GAME_LOCALE = localeList[newSelectionIndex]
App.setConfig("language", localeList[newSelectionIndex])
textArea2.deselect()
}
textArea2.selectionChangeListener = { _, newSelectionIndex ->
App.GAME_LOCALE = localeList[newSelectionIndex + localeFirstHalf.size]
App.setConfig("language", localeList[newSelectionIndex + localeFirstHalf.size])
textArea1.deselect()
}
// highlight initial
textArea1.buttons.forEachIndexed { index, it ->
if (it.textfun() == Lang["MENU_LANGUAGE_THIS"]) {
textArea1.select(index)
}
}
textArea2.buttons.forEachIndexed { index, it ->
if (it.textfun() == Lang["MENU_LANGUAGE_THIS"]) {
textArea2.select(index)
}
}
}
override fun updateUI(delta: Float) {
if (initialMouseBlock && !Terrarum.mouseDown) {
initialMouseBlock = false
}
if (!initialMouseBlock) {
textArea1.update(delta)
textArea2.update(delta)
}
}
override fun renderUI(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
batch.color = Color.WHITE
textArea1.render(frameDelta, batch, camera)
textArea2.render(frameDelta, batch, camera)
}
override fun show() {
initialMouseBlock = true
}
override fun hide() {
initialMouseBlock = true
}
override fun dispose() {
}
}