使用模板 - SQwatermark/Patchouli-wiki-zh_cn GitHub Wiki

除了可以使用帕秋莉手册自带的默认页面类型,你还可以创建你自己的页面类型!可以使用帕秋莉手册的模板系统(template system)创建新的页面类型。

模板是以类似于章节和分类的方式被创建和引用的,因此,它们在 /patchouli_books/YOURBOOK/en_us/templates/yourtemplate.json 之类的文件中,它们可以在 /templates 的子文件夹中分门别类。

你的第一个模板

让我们从一个小教程开始学习如何创建一个模板。

  • 进入 /patchouli_books/YOURBOOK/en_us/templates 文件夹,并创建 "test_template.json" 文件,按照如下方式填写:
{
	"components": [
		{
			"type": "text",
			"text": "Hello this is a test of the template system!",
			"x": 20,
			"y": 30
		}
	]
}
  • 为手册创建一篇新文章,并以你喜欢的方式编写。在其一个页面中将页面类型设置为 "test_template"。
    • 由于没有叫这个名字的默认页面类型,加载器会寻找叫手册中叫这个名字的模板。
    • 自然,这表示模板的名字不能和默认页面类型的名字相同。
{
    "type": "test_template"
}
  • 在游戏中试试。你的页面应该显示你设置的文本。可以随意更改文本和 x 和 y 坐标。
  • 回到 test_template.json 文件,将 "text" 更改为 "#text"。这是一个_变量_,我们可以在章节中设置它的值!
  • 回到使用了模板的章节 JSON 文件,将页面改成这样:
{
    "type": "test_template",
    "text": "We just passed in the text from a variable!"
}
  • 在游戏里看看编辑后的效果,你会发现模板将页面的 "text" 的值放进了 "#text" 中。这就是模板读取变量的方式。

关于变量的一些注意事项:

  • 你可以定义任意多的变量,所以你可以在不同位置放置两个文本组件,它们显示一样的 "#text" 值(如果你想让它们显示一样的内容的话),或者比方说,"#upper_text" 和 "#lower_text"。
  • 变量的名称不能和页面的通用键名称相同。这意味着你不能使用默认页面类型第一部分提及的键名。
  • 你可以了解更高级的变量用法,例如将它们嵌入字符串中,或在模板变量页面中派生它们。

模板 JSON 格式

  • components(对象数组,必需

这个模板的组件的数组。格式如下:

[
    {
        "type": "TYPE",
        (type specific data ...)
    },
    {
        "type": "TYPE",
        (type specific data...)
    }
    (...)
]

阅读模板组件了解帕秋莉手册提供的组件,以及每种组件需要的数据。

注意,组件是按照此处排列的顺序绘制的,如果你想让组件之间互相重叠,要按照合适的顺序排列它们。

  • include(对象数组)

这个组件包含的组件列表,阅读模板嵌套了解有关信息。

  • processor(字符串)

仅供模组作者使用:处理这个模板的处理器(processor)类的类名。处理器类可以将来自你的代码的数据派生为模板中定义的变量。阅读组件处理器了解有关信息。