package net.torvald.terrarum.modulebasegame.ui

import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Second
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextButtonList

class UITitleLanguage : UICanvas() {

    val menuLabels = arrayOf(
            "MENU_LABEL_RETURN"
    )


    override var openCloseTime: Second = 0f


    private val textAreaHMargin = 48
    override var width = (Terrarum.WIDTH * 0.75).toInt()
    override var height = Terrarum.HEIGHT - textAreaHMargin * 2

    private val localeList = Lang.languageList.toList().sorted()
    private val textArea = UIItemTextButtonList(this,
            localeList.map { Lang.langpack["MENU_LANGUAGE_THIS_$it"] ?: "!ERR: $it" }.toTypedArray(),
            Terrarum.WIDTH - width, textAreaHMargin,
            width, height,
            textAreaWidth = width,
            readFromLang = false,
            activeBackCol = Color(0),
            highlightBackCol = Color(0),
            backgroundCol = Color(0),
            inactiveCol = Color.WHITE,
            defaultSelection = null
    )


    init {


        //textArea.entireText = Lang.languageList.toList().sorted().map { Lang.langpack["MENU_LANGUAGE_THIS_$it"] ?: "!ERR: $it" }

        ////////////////////////////




        // attach listeners
        textArea.selectionChangeListener = { _, newSelectionIndex ->
            AppLoader.GAME_LOCALE = localeList[newSelectionIndex]
        }


    }

    override fun updateUI(delta: Float) {
        textArea.update(delta)

        //AppLoader.printdbg(this, "should be printing indefinitely")
    }

    override fun renderUI(batch: SpriteBatch, camera: Camera) {

        batch.color = Color.WHITE
        textArea.render(batch, camera)
    }

    override fun doOpening(delta: Float) {
    }

    override fun doClosing(delta: Float) {
    }

    override fun endOpening(delta: Float) {
    }

    override fun endClosing(delta: Float) {
    }

    override fun dispose() {
    }

}