# В данном файле демонстрируются встроенныые эффекты перехода, 
# определённые в common/definitions.rpy, а также определяются новые.

init:
    # Определяем несколько новых эффектов перехода.
    $ slow_dissolve = Dissolve(1.0)    
    $ flashbulb = Fade(0.2, 0.0, 0.8, color='#fff')

    # Эффекты перехода с использованием маски (ImageDissolve).
    $ circleirisout = ImageDissolve("id_circleiris.png", 1.0, 8)
    $ circleirisin = ImageDissolve("id_circleiris.png", 1.0, 8, reverse=True)
    $ circlewipe = ImageDissolve("id_circlewipe.png", 1.0, 8)
    $ dream = ImageDissolve("id_dream.png", 2.0, 64)
    $ teleport = ImageDissolve("id_teleport.png", 1.0, 0)

    image bg circleiris = "id_circleiris.png"
    image bg teleport = "id_teleport.png"
    

label demo_transitions:

    e "Ren'Py поставляется с широким набором встроенных эффектов перехода, а также имеет классы, позволяющие создавать свои эффекты."

    menu demo_transitions_menu:
        
        e "О каком виде эффектов перехода Вы бы хотели услышать?"

        "Простые эфффекты":            

            call demo_simple_transitions from _call_demo_simple_transitions_1

        "Эффекты с использованием маски (ImageDissolve)":

            call demo_imagedissolve_transitions from _call_demo_imagedissolve_transitions_1

        "Эффекты движения (MoveTransition)":

            call demo_movetransition from _call_demo_movetransition_1

        "Эффекты сдвига (CropMove)":

            call demo_cropmove_transitions from _call_demo_cropmove_transitions_1
            
            
        ""

        "Расскажи о чём-нибудь другом.":

            return
        
    jump demo_transitions_menu


label demo_simple_transitions:

    e "Хорошо, я могу рассказать о простых эффектах. Простыми они называются потому, что их совсем несложно настраивать."

    e "Но не стоит из-за этого их недооценивать, поскольку их Вы скорее всего и будете использовать больше всего."

    show bg whitehouse
    with dissolve

    e "Эффект {i}dissolve{/i}, пожалуй, самый удобный. Он \"растворяет\" одно изображение в другое."

    show bg washington
    with slow_dissolve

    e "Функция {i}Dissolve{/i} позволяет создавать собственные эффекты на основе dissolve, изменяя время, за которое он происходит."
    
    show bg whitehouse
    with fade

    e "Эффект {i}fade{/i} \"упрозрачнивает\" сцену в чёрный экран, а затем \"упрозрачнивает\" чёрный экран в новую сцену."

    e "Если же нужно остаться в чёрном экране, пожалуй, стоит воспользоваться {i}dissolve{/i} вместо {i}fade{/i}."

    with flashbulb

    e "Можно использовать функцию {i}Fade{/i} для создания своих эффектов. Меняя время упрозрачнивания, нахождения в среднем экране, распрозрачнивания и цвет среднего экрана, можно создать различные эффекты, вроде вспышки."
    
    show bg washington
    with pixellate
    
    e "Эффект {i}pixellate{/i} пиксилезует старый экран, переключается на новый, и затем распикселизует его."

    e "Скорее всего, он не подойдёт для большинства игр.
       Но мы считаем его прикольным."

    e "Можно использовать функцию {i}Pixellate{/i} для изменения параметров пиксилезации."
    
    e "Движения также могут быть использованы как эффекты перехода."

    "..."

    "......"

    $ renpy.play('punch.wav')
    with vpunch

    e "Эй! Не отвлекайтесь!"

    e "Я как раз собиралась продемонстрировать эффект {i}vpunch{/i}... что ж, похоже я его уже продемонстрировала."

    $ renpy.play('punch.wav')
    with hpunch

    e "Также можно встряхнуть экран по горизонтали, эффектом {i}hpunch{/i}. Они созданы с помощью функции {i}Move{/i}."

    e "Есть ещё эффект {i}move{/i}, созданный с помощью функции {i}MoveTransition{/i}."

    show eileen happy at right
    with move
    show eileen happy
    with move

    e "Эффект {i}move{/i} находит изображения, изменившие местоположение, и двигает их в новое место. Это самый простой способ изобразить в игре движение."

    e "Наконец, есть ещё {i}Pause{/i}, позволяющая создавать эффекты, просто выжидающие определённое время."

    e "Зачем такое может понадобиться?"

    e "Потому что щелчок во время исполнения цепочки эффектов прерывает цепочку и приводит к мгновенному показу финального состояния."

    e "Попробуйте щёлкнуть мышью во время следующей цепочки:"

    show bg whitehouse
    with dissolve
    with Pause(1)
    show bg washington
    with dissolve

    e "{i}Pause{/i} позволяет легко создавать пропускаемые сценки на движке."
    
    e "Ладно, это всё, что касается простых эффектов."

    return


label demo_imagedissolve_transitions:

    e "Пожалуй самый гибкий вид эффектов это  Эффекты с использованием маски (ImageDissolve), позволяющие использовать изображение для контроля за ходом \"растворения\"."

    e "Что позволяет довольно просто создавать весьма сложные эффекты. Попробуем это в деле, а затем я объясню, как это работает."

    e "В состав Ren'Py входят два встроенных ImageDissolve-эффекта."

    
    scene black
    with blinds
    
    scene bg washington
    show eileen happy
    with blinds
    
    
    e "Эффект {i}blinds{/i} работает как вертикальные жалюзи."

    scene black
    with squares

    scene bg washington
    show eileen happy
    with squares

    e "Эффект {i}squares{/i} использует для демонстрации изображений квадратики."

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

    e "Самые интересные эффекты не содержатся в стандартной библиотеке."

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

    e "Можете нажать кнопку в правом верхнем углу экрана чтобы посмотреть, как они реализованы здесь."

    scene black
    with circleirisin

    e "Мы можем скрывать что-либо с помощью {i}circleirisin{/i}..."

    scene bg washington
    with circleirisout

    e "... и показывать с помощью {i}circleirisout{/i}."

    show bg whitehouse
    with circlewipe

    e "Эффект {i}circlewipe{/i} меняет экраны по кругу."

    scene bg washington
    with dream

    e "Эффект {i}dream{/i} меняет экран по этому странному волнообразному рисунку, и довольно медленно."

    show eileen happy
    with teleport

    e "Эффект {i}teleport{/i} показывает новое изоброжение по одной горизонтальной полоске за раз."

    scene bg circleiris
    with dissolve

    e "Этот фон - изображение, используемое эффектом {i}circleirisout{/i}."

    e "Когда используется {i}ImageDissolve{/i}, белые области растворяются первыми, за ними следуют всё более тёмные. Взгляните."

    show bg washington
    with circleirisout

    e "Если мы применим в {i}ImageDissolve{/i} аргумент {i}reverse{/i}, первыми растворятся чёрные области."

    show bg circleiris
    with circleirisin

    e "Это позволяет эффектам {i}circleirisin{/i} и {i}circleirisout{/i} использовать одно и то же изображение."

    show bg teleport
    with dissolve

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

    show bg washington
    with teleport

    e "Эффект воздействует только на изменяющиеся части экрана..."

    show eileen happy
    with teleport

    e "... что позволяет применять его единственно к персонажу."
    
    e "Для других примеров ImageDissolve обратитесь к демке {i}Utsukushii Effects{/i}."

    e "В ней показано, как умный разработчик может создать с помощью ImageDissolve самые разнообразные эффекты."

    return
    
label demo_cropmove_transitions:

    e "Эффекты сдвига (CropMove) - довольно большой класс эффектов перехода. Правда, они используются не особо часто."

    show eileen happy at offscreenleft
    with move

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

    scene bg whitehouse
    with wiperight

    e "Сначала идёт {i}wiperight{/i}..."

    scene bg washington
    with wipeleft

    e "...затем {i}wipeleft{/i}... "    

    scene bg whitehouse
    with wipeup

    e "...{i}wipeup{/i}..."

    scene bg washington
    with wipedown

    e "...и {i}wipedown{/i}."

    e "Теперь скольжения."

    scene bg whitehouse
    with slideright

    e "{i}Slideright{/i}..."

    scene bg washington
    with slideleft

    e "...{i}slideleft{/i}..."

    scene bg whitehouse
    with slideup

    e "...{i}slideup{/i}..."

    scene bg washington
    with slidedown

    e "и {i}slidedown{/i}."

    e "Эффекты {i}slide...{/i} выводят новое изображение, а {i}slideaway...{/i} убирают старое."

    scene bg whitehouse
    with slideawayright

    e "{i}Slideawayright{/i}..."

    scene bg washington
    with slideawayleft

    e "...{i}slideawayleft{/i}..."

    scene bg whitehouse
    with slideawayup

    e "...{i}slideawayup{/i}..."

    scene bg washington
    with slideawaydown

    e "и {i}slideawaydown{/i}."

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

    scene bg whitehouse
    with irisout

    e "Это {i}irisout{/i}..."

    scene bg washington
    show eileen happy
    with irisin

    e "... и {i}irisin{/i}."

    e "Этого достаточно, чтобы у кого-то закружилась голова."

    return

label demo_movetransition:

    e "Самый часто используемый эффект движения (MoveTransition) это {i}move{/i}, который двигает с места на место изображения, поменявшие своё положение."

    show eileen happy at left
    with move

    e "Вот так."

    e "Есть ещё {i}moveout{/i} и {i}movein{/i}."

    e "Эффекты класса {i}moveout{/i} ({i}moveoutleft, moveoutright, moveouttop,{/i} и {i}moveoutbottom{/i}) убирают скрываемые изображения за соответствущий край экрана."

    e "Эффекты класса {i}movein{/i} ({i}moveinleft, moveinright, moveintop,{/i} и {i}moveinbottom{/i}) выдвигают из-за соответствущего края экрана новые изображения."

    e "Вот как они работают:"

    hide eileen happy
    with moveoutleft

    show eileen happy
    with moveinbottom

    hide eileen happy
    with moveoutbottom

    show eileen happy
    with moveinright

    hide eileen happy
    with moveoutright

    show eileen flip
    with moveintop

    hide eileen flip
    with moveouttop

    show eileen happy
    with moveinleft

    e "Это всё, что можно сказать о movein и moveout."

    e "Наконец, существуют эффекты {i}zoomin{/i} и {i}zoomout{/i}, которые показывают и скрывают изображения увеличением / уменьшением."

    hide eileen happy
    with zoomout

    show eileen happy
    with zoomin

    e "Теперь совсем всё."
    
    return
