Информационный экран, пополняемый

init python:
    # при первом запуске игры создается пустой список "открытий"
    if persistent.pages is None:
        persistent.pages = []
    # номер текущей страницы
    page = 0
# экран для отображения открытых страничек
screen scrPages:
    # рамка для страницы
    frame:
        align (.5, .2) # расположение
        # размеры
        xminimum 500 xmaximum 500
        yminimum 400 ymaximum 400
        background "#0028" # фон
        vbox:
            spacing 16
            # контейнер с кнопками управления страницами
            hbox:
                xfill True
                # кнопка, которая листает страницы назад (с проверкой на границы)
                # SensitiveIf делает кнопку активной при выполнении условия
                textbutton _("«") align(.0, .0) action [SensitiveIf(page > 0), SetVariable("page", page - 1)]
                text str(page + 1) + " из " + str(len(persistent.pages)) align(.5, .0)
                # кнопка, которая листает страницы вперед (с проверкой на границы)
                textbutton _("»") align(1.0, .0) action [SensitiveIf(page < len(persistent.pages) - 1), SetVariable("page", page + 1)]
            # если текущая страница доступна, то выводим ее
            if page >= 0 and page < len(persistent.pages):
                $ title, txt, img = persistent.pages[page]
                # горизонтальный контейнер, чтобы картинка была слева
                hbox:
                    vbox:
                        # картинка
                        xminimum 200 xmaximum 200
                        # если она есть, то выводим
                        if img:
                            add img align(.5, .2)
                    # вертикальный контейнер для текста
                    vbox:
                        xfill True yalign .1
                        # расстояние между объектами в контейнере
                        spacing 16
                        # заголовок страницы
                        text title xalign .5
                        # текст страницы
                        text txt xfill True
 
label start:
    "Для начала покажем экран со страницами. При первом запуске пустой."
    show screen scrPages
    "Добавим одну страницу."
    $ persistent.pages.append(("Страница 1", "Текст страницы. Просто любой текст для того, чтобы показать пример.", "image1"))
    "А теперь добавим еще пару страниц."
    $ persistent.pages.append(("Страница 2", "Текст второй страницы. И снова просто любой текст для того, чтобы показать пример.", "image2"))
    $ persistent.pages.append(("Страница 3", "Текст второй страницы. И снова просто любой текст для того, чтобы показать пример. Только в этот раз без картинки.", ""))
    "Теперь их можно полистать."
    hide screen scrPages
    "Сеанс окончен. Всем спасибо."
    menu:
        "Очистить список страниц?"
        "Да":
            # эта строка очищает данные в списке страниц
            $ persistent.pages = []
            # скорее всего для этого будет использоваться кнопка
            # textbutton _("Очистить") action SetField(persistent, "pages", [])
        "Нет":
            pass
    return

Комментарии