목차

이전 항목

제작자 정의 명령문

다음 항목

Character 클래스 콜백

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

맞춤 텍스트 태그

렌파이는 자신만의 텍스트 태그 만들기를 지원합니다. 직접 만든 텍스트 태그로 텍스트나 텍스트 태그를 추가하거나 제거하는 등, 이들을 조작할 수 있습니다.

맞춤 텍스트 태그는 텍스트 태그 함수를 config.custom_text_tags 딕셔너리 항목에 배정하는 방법으로 생성할 수 있습니다.

config.custom_text_tags

텍스트 태그 이름을 텍스트 태그 함수에 매핑한다.

텍스트 태그 함수는 인수를 세 개 받습니다.: 태그, 태그에 사용할 인수, 정보 튜플의 리스트. 예를 들어 다음과 같은 텍스트가 있을 때:

"{big=2}Hello, {b}World{/b}{/big}"

태그는 "big", 인수는 문자열 "2", 정보 튜플의 리스트는 아래와 같이 받습니다.

[
    (renpy.TEXT_TEXT, "Hello, "),
    (renpy.TEXT_TAG, "b"),
    (renpy.TEXT_TEXT, "World"),
    (renpy.TEXT_TAG, "/b"),
]

텍스트 태그 함수는 새로운 정보 튜플의 리스트 하나를 반환해야 합니다. 이 리스트는 텍스트 태그와 그 내용을 교체할 때 사용합니다.

정보 튜플은 두 가지 요소로 구성되어 있습니다. 첫 번째 요소는 아래 나열된 상수 가운데 하나입니다. 두 번째 요소는 첫 번째 요소에 따라 아래에 기술한 대로 여러 가지 가운데 하나가 될 수 있습니다.

renpy.TEXT_TEXT

두 번째 요소는 사용자에게 표시할 텍스트입니다.

renpy.TEXT_TAG

두 번째 요소는 괄호가 빠진 텍스트 태그 정보입니다.

renpy.TEXT_DISPLAYABLE

두 번째 요소는 텍스트에 연결될 디스플레이어블입니다.

renpy.TEXT_PARAGRAPH

이 것은 문단 분리를 나타내며, 두 번째 요소는 정의되지 않으나 존재해야 합니다.

주의사항

대사 텍스트 태그인 {p}, {w}, {nw}, {fast} 는 맞춤 텍스트 태그보다 앞서 처리되므로 맞춤 텍스트 태그 안에 포함하거나, 맞춤 텍스트 태그를 그대로 지나치는 식으로 사용해서는 안 됩니다.

예제

예제 텍스트 태그 big은 {size} 텍스트 태그와 비슷해보이나, 입력 받은 인수를 곱셈합니다.:

init python:

    def big_tag(tag, argument, contents):

        size = int(argument) * 20

        return [
                (renpy.TEXT_TAG, u"size={}".format(size)),
            ] + contents + [
                (renpy.TEXT_TAG, u"/size"),
            ]

    config.custom_text_tags["big"] = big_tag


"이 글씨는{big=3}엄청 커!{/big}"

예제 텍스트 태그 rot13는 rot13 변환을 텍스트에 적용합니다. rot13 태그가 두 번 적용된 Rot26이라는 텍스트는 평범한 텍스트라는 점을 기억하세요.

init python:

    def rot13_tag(tag, argument, contents):
        rv = [ ]

        for kind, text in contents:

            if kind == renpy.TEXT_TEXT:
                text = text.encode("rot13")

            rv.append((kind, text))

        return rv

    config.custom_text_tags["rot13"] = rot13_tag

"Rot0. {rot13}Rot13. {rot13}Rot26. {/rot13}Rot13. {/rot13}Rot0."