# Этот файл содержит код, демонстрирующий возможности Ren'Py в анимации.

init:

    # Простенькая анимация. Мы показываем объекты, которые хотим,
    # в течение желаемого времени.
    image eileen animated = Animation(
        "eileen_vhappy.png", 1.0,
        "eileen_happy.png", 1.0)

    # То же, но с использованием эффектов перехода
    image transanimation = anim.TransitionAnimation(
        im.Scale("whitehouse.jpg", 400, 300), 1.0, dissolve,
        im.Scale("washington.jpg", 400, 300), 1.0, dissolve)
        
    # Мерцание.
    image blinking text = anim.Blink(Text("Blink", color="#ff0", size=72))
    
    # Анимация на основе состояний-переходов.
    image smanim = anim.SMAnimation(
        
        # Имя начального состояния.
        "r",

        # Используемые состояния, и объекты, изображаемые во время
        # этих состояний.
        anim.State("r", "#f00"),
        anim.State("g", "#0f0"),
        anim.State("b", "#00f"),

        # Переходы, описываемые старым состоянием, временем, в течение
        # которого мы находимся в старом состоянии, новым состоянием и 
        # эффектом перехода.
        #
        # dissolve работает только для полностью непрозрачных изображений.
        # Также можно применять move.        
        anim.Edge("r", .5, "g", dissolve),
        anim.Edge("r", .5, "b", dissolve),

        anim.Edge("g", .5, "r", dissolve),
        anim.Edge("g", .5, "b", dissolve),

        anim.Edge("b", .5, "r", dissolve),
        anim.Edge("b", .5, "g", dissolve),         
        )

label demo_animation:


    e "Ren'Py поддерживает ряд способов создания анимации."

    e "Это позволяет изменять изображения независимо от действий пользователя."

    show eileen animated

    e "К примеру, сейчас я меняю своё выражение лица раз в секунду."

    e "Даже несмотря на то, что Вы щёлкнули мышью (или нажали на клавишу), я продолжаю это делать."

    e "Это пример работы функции {i}Animation{/i}."

    show eileen happy

    e "Функция {i}Animation{/i} ограниченна простым списком изображений с фиксированными интервалами смены."

    e "Последовательность может повторяться или завершиться после одного прохода."

    show eileen happy at right
    show transanimation at Position(xpos=50, ypos=50, xanchor=0, yanchor=0)
    with moveinleft

    e "Функция {i}anim.TransitionAnimation{/i} примерно такая же, но она позволяет задавать эффекты перехода между изображениями."

    show eileen happy
    hide transanimation
    with moveoutleft
    
    e "Если же нужно что-то большее, можно воспользоваться функцией {i}anim.SMAnimation{/i}."

    e "Она может случайным образом менять показываемое изображение, да ещё и с эффектами перехода."

    scene smanim
    show eileen happy
    with dissolve

    e "Сейчас мы случайно переключаем фоновое изображение между красным, зелёным и синим цветами."

    e "Психоделично."

    scene bg washington
    show eileen happy
    with dissolve

    e "Лучше остановиться, пока у кого-нибудь не начался припадок."

    show blinking text at Position(xalign=.5, yalign=.7)
        
    e "Наконец, есть {i}anim.Blink{/i}, используемая для мигания изображения."

    e "Понятия не имею, почему такое может быть применено к изображению персонажа, но мигающий текст неплохо подходит для изображения различных вывесок." 

    hide blinking text
    with dissolve
    
    return

    
