功能描述 / Feature Description
在 Maa 界面选项中引入 scan_select 选项类型,支持基于目录和 glob 的文件扫描配置。 为 scan_select 提供一个下拉菜单形式的 UI 控件,带有“刷新”按钮,可从磁盘重新加载可选项,并支持嵌套子选项。 扩展选项处理逻辑以支持 scan_select 的选择,将选定的值应用到 pipeline_override 中,并递归处理相关子选项。
scan_select 用于在加载 interface.json 时扫描目录文件,并把扫描结果自动写入当前选项的 cases,适用于“配置文件选择”等动态枚举场景。
字段定义如下:
| 字段 |
类型 |
必填 |
说明 |
type |
"scan_select" |
是 |
选项类型 |
label |
string |
否 |
前端显示名称 |
description |
string |
否 |
描述信息 |
scan_dir |
string |
是 |
扫描目录。相对路径基于 interface.json 所在目录解析,并做越界限制(不允许跳出该目录) |
scan_filter |
string |
是 |
glob pattern,用于筛选文件,如 **/*.json |
pipeline_override |
object |
是 |
任务执行时使用的覆盖配置,必须在任意层级的 attach 中至少包含一次当前选项名键(如 attach.bbc_team_config) |
cases |
OptionCase[] |
否(配置阶段应省略或空数组) |
加载时自动生成,name/label 均为相对 scan_dir 的路径+文件名 |
default_case |
string |
否 |
默认选项名称 |
示例:
加载前:
{
"option": {
"bbc_team_config": {
"type": "scan_select",
"label": "BBC 队伍配置",
"description": "选择 BBC 队伍配置文件",
"scan_dir": "./resource/BBchannel/settings",
"scan_filter": "**/*.json",
"pipeline_override": {
"队伍配置": {
"attach": {
"bbc_team_config": ""
}
}
}
}
}
}
加载完成且用户选择 1.json:
该结果仅在内存中保留,不会实际修改 interface.json
{
"option": {
"bbc_team_config": {
"type": "scan_select",
"label": "BBC 队伍配置",
"description": "选择 BBC 队伍配置文件",
"scan_dir": "./resource/BBchannel/settings",
"scan_filter": "**/*.json",
"pipeline_override": {
"队伍配置": {
"attach": {
"bbc_team_config": "1.json"
}
}
},
"cases": [
{
"name": "1.json",
"label": "1.json"
},
{
"name": "bbb/c.json",
"label": "bbb/c.json"
}
]
}
}
}
scan_select 会递归遍历 pipeline_override,并对所有命中的 attach.option_name 赋值。
例如在 队伍配置1 和 队伍配置2 下都存在 attach.bbc_team_config 时,两处都会被写入同一个用户选择结果。
MaaFramework 版本 / Version
No response
其他信息 / Additional Information
No response
功能描述 / Feature Description
在 Maa 界面选项中引入 scan_select 选项类型,支持基于目录和 glob 的文件扫描配置。 为 scan_select 提供一个下拉菜单形式的 UI 控件,带有“刷新”按钮,可从磁盘重新加载可选项,并支持嵌套子选项。 扩展选项处理逻辑以支持 scan_select 的选择,将选定的值应用到 pipeline_override 中,并递归处理相关子选项。
scan_select用于在加载interface.json时扫描目录文件,并把扫描结果自动写入当前选项的cases,适用于“配置文件选择”等动态枚举场景。字段定义如下:
type"scan_select"labelstringdescriptionstringscan_dirstringscan_filterstringglob pattern,用于筛选文件,如**/*.jsonpipeline_overrideobjectattach中至少包含一次当前选项名键(如attach.bbc_team_config)casesOptionCase[]name/label均为相对scan_dir的路径+文件名default_casestring示例:
加载前:
{ "option": { "bbc_team_config": { "type": "scan_select", "label": "BBC 队伍配置", "description": "选择 BBC 队伍配置文件", "scan_dir": "./resource/BBchannel/settings", "scan_filter": "**/*.json", "pipeline_override": { "队伍配置": { "attach": { "bbc_team_config": "" } } } } } }加载完成且用户选择
1.json:{ "option": { "bbc_team_config": { "type": "scan_select", "label": "BBC 队伍配置", "description": "选择 BBC 队伍配置文件", "scan_dir": "./resource/BBchannel/settings", "scan_filter": "**/*.json", "pipeline_override": { "队伍配置": { "attach": { "bbc_team_config": "1.json" } } }, "cases": [ { "name": "1.json", "label": "1.json" }, { "name": "bbb/c.json", "label": "bbb/c.json" } ] } } }scan_select会递归遍历pipeline_override,并对所有命中的attach.option_name赋值。例如在
队伍配置1和队伍配置2下都存在attach.bbc_team_config时,两处都会被写入同一个用户选择结果。MaaFramework 版本 / Version
No response
其他信息 / Additional Information
No response