SugarCube 宏扩展
Estimated reading time: 9 minutes基本介绍
框架提供了一系列增强的 SugarCube 宏,特别专注于多语言支持和用户界面优化。这些宏可以让您的游戏文本自动适应当前语言设置,并提供更灵活的界面组件。
语言相关宏
<<language>>
根据当前游戏语言显示不同的内容块。
语法:
说明:
- 根据
maplebirch.Language自动显示对应语言的内容 - 支持所有框架支持的语言
- 内容块中可包含任意合法的 SugarCube 代码
示例:
lanSwitch
根据语言返回不同的文本值,可作为函数或宏使用。
作为函数使用:
作为宏使用:
参数:
- 多个字符串参数:按框架支持的语言顺序传入
- 对象参数:
{语言代码: 文本}格式
示例:
<<lanButton>>
创建支持多语言的按钮,按钮文本会根据当前语言自动更新。
语法:
参数:
- 第一个参数:翻译键(字符串)
- 可选参数:
- 格式模式:
'title','upper','lower','capitalize','camel','pascal','snake','kebab','constant' class:样式类名:添加 CSS 类style:内联样式:添加内联样式
- 格式模式:
特性:
- 按钮文本自动翻译
- 支持文本格式转换
- 支持自定义样式
- 语言切换时自动更新按钮文本
示例:
<<lanLink>>
创建支持多语言的链接,链接文本会根据当前语言自动更新。
语法:
参数:
- 第一个参数:翻译键(字符串)
- 第二个参数(可选):目标段落名称
- 可选参数:
- 格式模式:支持所有
convert函数可用的格式 class:样式类名style:内联样式
- 格式模式:支持所有
SugarCube 链接语法兼容:
- 支持原生的
[[文本|段落]]语法格式 - 格式:
<<lanLink [[翻译键|段落]]>>
特性:
- 链接文本自动翻译
- 支持已访问链接样式
- 支持无效链接检测
- 语言切换时自动更新链接文本
- 支持鼠标悬停提示
- 兼容 SugarCube 原生链接语法
示例:
<<lanListbox>>
创建支持多语言的下拉选择框,选项文本会根据当前语言自动更新。
语法:
参数:
- 第一个参数:保存选中值的变量名(以
$或_开头) - 选项参数:
<<option "翻译键" "值">><<optionsfrom "表达式">>
- 可选参数:
autoselect:自动选中与变量当前值匹配的选项class:样式类名style:内联样式
选项类型:
- 静态选项:使用
<<option>>定义 - 动态选项:使用
<<optionsfrom>>从表达式生成- 表达式可返回:数组、对象、Map、Set
- 表达式会在语言切换时重新计算
示例:
<<radiobuttonsfrom>>
从数据源创建一组支持多语言的单选按钮。
语法:
参数:
- 第一个参数:保存选中值的变量名
- 第二个参数:选项数据,支持多种格式
- 第三个参数(可选):选项之间的分隔符,默认为
" | "
数据格式:
- 数组格式:
[ ["显示文本", 值], ... ] - 字符串格式:
"选项1[值1] | 选项2[值2]" - 多语言对象:
[ ["英文", ["中文", 值]], ... ] - 多语言键值对:
[ {EN: "English", CN: "中文"}, 值 ]
示例:
<<maplebirchReplace>>
用于替换自定义覆盖层(overlay)内容的内部宏。
说明:
这是一个用于打开覆盖层的宏。
功能:
- 替换自定义覆盖层的标题和内容
- 处理覆盖层的显示/隐藏
示例:
数值与状态显示宏
以下宏由框架的 maplebirch.tool.macro(defineMacros)提供,用于在界面中输出属性变化或恩惠等数值片段。通常在自定义 widget 或脚本中调用。
statChange
输出属性变化的带色文本片段(如「+ 5」「- 3」),常用于战斗、事件等场景的数值反馈。
签名:statChange(statType, amount, colorClass, condition)
行为:
amount会先被转为整数;若结果非有限数(如NaN)或为0,返回空文档片段,不输出任何内容。- 若
V.settings.blindStatsEnabled为真(盲人模式)或condition()为false,同样返回空片段。
返回值:DocumentFragment,可插入 DOM 或由 widget 输出。
grace
输出恩惠(Grace)变化的带色片段,与庙宇等级系统配合使用。
签名:grace(amount, expectedRank?)
行为:
amount取整规则同statChange;盲人模式不显示。- 若玩家未加入庙宇或
expectedRank与当前庙宇等级比较后不满足显示条件,则返回空片段;否则输出与statChange('Grace', amount, ...)类似的带色片段。
返回值:DocumentFragment。
