# Released under the MIT License. See LICENSE for details.
#
"""Bits of utility functionality related to co-op levels."""

import bauiv1 as bui
from bauiv1 import builtinassets
from bauiv1 import classicassets


class CoopLevelLockedWindow(bui.Window):
    """Window showing that a level is locked.

    Note: both names arrive as legacy translate=coopLevelNames
    Lstrs, so the surrounding text stays Lstr until that category
    ports (strings-asset-migration D35). The authored
    coop/level_is_locked and coop/level_must_be_completed_first
    entries are ready and waiting for that.
    """

    def __init__(self, name: bui.Lstr, dep_name: bui.Lstr):
        width = 550.0
        height = 250.0
        lock_tex = classicassets.textures.lock.get()
        assert bui.app.classic is not None
        uiscale = bui.app.ui_v1.uiscale
        super().__init__(
            root_widget=bui.containerwidget(
                size=(width, height),
                transition='in_right',
                scale=(
                    1.7
                    if uiscale is bui.UIScale.SMALL
                    else 1.3 if uiscale is bui.UIScale.MEDIUM else 1.0
                ),
            )
        )
        bui.textwidget(
            parent=self._root_widget,
            position=(150 - 20, height * 0.63),
            size=(0, 0),
            h_align='left',
            v_align='center',
            text=bui.Lstr(
                resource='levelIsLockedText', subs=[('${LEVEL}', name)]
            ),
            maxwidth=400,
            color=(1, 0.8, 0.3, 1),
            scale=1.1,
        )
        bui.textwidget(
            parent=self._root_widget,
            position=(150 - 20, height * 0.48),
            size=(0, 0),
            h_align='left',
            v_align='center',
            text=bui.Lstr(
                resource='levelMustBeCompletedFirstText',
                subs=[('${LEVEL}', dep_name)],
            ),
            maxwidth=400,
            color=bui.app.ui_v1.infotextcolor,
            scale=0.8,
        )
        bui.imagewidget(
            parent=self._root_widget,
            position=(56 - 20, height * 0.39),
            size=(80, 80),
            texture=lock_tex,
            opacity=1.0,
        )
        btn = bui.buttonwidget(
            parent=self._root_widget,
            position=((width - 140) / 2, 30),
            size=(140, 50),
            label=classicassets.strings.ui.ok,
            on_activate_call=self._ok,
        )
        bui.containerwidget(
            edit=self._root_widget, selected_child=btn, start_button=btn
        )
        builtinassets.audio.error.get().play()

    def _ok(self) -> None:
        bui.containerwidget(edit=self._root_widget, transition='out_left')
