렌파이 엔진에서 모드Mode란 인터렉션의 종류를 설명하는 간결한 방법입니다. 렌파이에 모드가 입력되면, 사용자가 정의한 콜백을 실행할 수 있습니다. 이 콜백으로 사용자 인터페이스를 재설정해 모드가 바뀔 때마다 어떤 동작을 할 것인지 정할 수 있습니다. 예를 들면 ADV 모드에서 NVL 모드로 바꿀 때 트랜지션이 발생하도록 할 수도 있습니다.
모드 시스템이 존재하는 이유는 인터렉션 등이 바꿀 때마다 이를 감지하고 변경된 내용에 반응하는 강력하면서도 유연한 방법을 제공하는 것입니다.
다음은 내장 인터렉션에 상응하는 모드들입니다.:
renpy.pause()
가 실행될 때 렌파이가 진입하는 모드입니다.
멈춤 시간이 설정되지 않은 pause
명령문이 발생한 때에도
렌파이는 이 모드에 진입합니다.with
명령문으로 인해 트랜지션이 발생할 때
렌파이가 진입하는 모드입니다. 멈춤 시간이 설정된
pause
명령문에도 사용할 수 있습니다.
with 모드는 scene, show, hide 명령문이 실행된 후에 나타나는 with 명령문의 시작 지점에 진입합니다.
renpy.imagemap()
을 사용해 구식 이미지맵이 만들어졌을 때
렌파이가 진입하는 모드입니다.renpy.input()
함수를 사용해 텍스트 입력을 받을 때
렌파이가 진입하는 모드입니다.다른 모드는 renpy.mode 함수를 호출하여 진입할 수 있습니다.
renpy.
get_mode
()¶현재 모드를 반환하도 모드가 정의되지 않았다면 None을 반환한다.
renpy.
mode
(mode)¶렌파이가 지정된 모드로 진입하도록 한다. 이미 그 모드에 진입했다면 그대로 머무른다.
config.mode_callbacks
변수는
렌파이가 모드에 진입할 때마다 발생되는 모드 콜백 리스트를 포함하고 있습니다. 모드
콜백은 두 개의 매개변수와 함께 호출됩니다.
이미 접근되어있는 모드에 진입할 때에는, old_modes 에 있는 첫 번째 항목이 mode 와 동일해집니다.
예제에 나와있는 모드 콜백은 ADV 모드와 NVL 모드를 서로 바꿀 때 트랜지션이 나타나게 만드는 함수입니다. 이미 렌파이 기본 기능이므로 사용할 필요는 없습니다.
init python:
def _nvl_adv_callback(mode, old_modes):
old = old_modes[0]
if config.adv_nvl_transition:
if mode == "nvl" or mode == "nvl_menu":
if old == "say" or old == "menu":
nvl_show(config.adv_nvl_transition)
if config.nvl_adv_transition:
if mode == "say" or mode == "menu":
if old == "nvl" or old == "nvl_menu":
nvl_hide(config.nvl_adv_transition)
config.mode_callbacks.append(_nvl_adv_callback)