Skip to content

Commit 267eda2

Browse files
feat(config): 任务开关支持多选形态与同脚本多段声明 (#82)
终末地与鸣潮的一条龙都含「多选」开关:{list_key: [已选中的标识]},在列表里即在跑。 候选项只存在于脚本源码(ok-ww 是 src/task/DailyTask.py 的 options,ok-ef 是 daily_routine_mixin.py / daily_regional_runner.py 的常量),配置里只有已选中的。 - 新增多选形态(config + list_key + names):names 在此即全部候选项 - 开关值的落点抽成取值器(_DictSlot / _MemberSlot),_NativeTask 因此只剩 行标识 / 默认行名 / 落点三项,四种形态的读取与写回仍全在基类 - 多段声明写在 segments 下,节点级的 config 作为各段默认(同一文件的多段只写一次路径) - names 可简写成 [标识](行名与标识相同),省去恒等映射 - 段实现类改名 *TaskSwitch → *Segment,对外只留 TaskSwitch 聚合(read 按声明顺序 拼接、write 按行名分发到行所在的段) 真机:终末地 22 项(14 布尔 + 8 多选)、鸣潮 5 项(1 布尔 + 4 多选);多选写回往返实测 增删成员正确、文件逐字节复原。
1 parent 76b0478 commit 267eda2

3 files changed

Lines changed: 554 additions & 145 deletions

File tree

‎config/task_switch_list.yml‎

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 脚本原生任务的开关声明:把该脚本自带的任务列表接到配置弹窗的「任务开关」区。
22
# 声明本文件的脚本才显示该区,未声明(或该脚本未安装、缺表)即整区不出现。
33
#
4-
# 每个脚本一段(脚本标识与 config.yml 的 script_name 一致),声明形式三选一:
4+
# 每个脚本一个节点(脚本标识与 config.yml 的 script_name 一致),声明形式四选一:
55
# ① config + tasks_key + enabled_key
66
# tasks_key 任务定义所在键:{任务 id: 任务名}
77
# enabled_key 任务启用表所在键:{任务 id: 开关},键与定义表一致
@@ -10,20 +10,35 @@
1010
# 即行名、值本身即开关;值不是 bool 的项(带子选项的)不作开关
1111
# ③ config + list_key + id_key + enabled_key
1212
# 应用列表形态:{list_key: [{id_key: 标识, enabled_key: 开关}]}
13+
# ④ config + list_key + names
14+
# 多选形态:{list_key: [已选中的标识]},在列表里即在跑。候选项只在脚本源码里
15+
# (配置只存已选中的),故 names 必填、即全部候选项
1316
#
14-
# 三种形态都可选 names:{行标识: 展示名} —— 给了它就是白名单(只列出的行才出现,行名取
15-
# 映射值;脚本新增任务要补一行才显示),不给则全部照原样。行标识即各形态给出的原始行名
16-
# (应用标识 / 配置键名 / 捕获组)。
17+
# ①②③可选 names:{行标识: 展示名} —— 给了它就是白名单(只列出的行才出现,行名取映射值;
18+
# 脚本新增任务要补一行才显示),不给则全部照原样。行标识即各形态给出的原始标识(应用标识 /
19+
# 配置键名 / 捕获组)。行名与标识相同时可简写成 [标识, ...]。
20+
#
21+
# 同一脚本的开关散在多处时(常见于同一个文件的不同键),用 segments 列成多段(每段一种
22+
# 形态),节点级的 config 作为各段默认、只写一次,如 ok-ef / ok-ww。
1723
#
1824
# config 为该脚本的原生配置文件(相对脚本安装目录)。
1925
BetterGI:
2026
config: User/OneDragon/默认配置.json
2127
tasks_key: TaskDefinitions
2228
enabled_key: TaskEnabledList
2329

30+
# 终末地:⭐ 开头的布尔项是任务开关;另三项是多选(在列表里即在跑,候选项见
31+
# src/tasks/daily/daily_routine_mixin.py 与 daily_regional_runner.py,都是中文故用列表简写)。
2432
ok-ef:
2533
config: data/apps/ok-ef/working/configs/DailyTask.json
26-
task_pattern: "⭐(.+)"
34+
segments:
35+
- task_pattern: "⭐(.+)"
36+
- list_key: "⭐地区建设"
37+
names: [据点兑换, 买物资, 买卖货]
38+
- list_key: "⭐帝江号收菜"
39+
names: [收集线索, 使用制造舱助力]
40+
- list_key: "⭐活动奖励"
41+
names: [周常奖励, 理智补给, 刮刮乐]
2742

2843
# 绝区零:一条龙的应用组配置(ApplicationGroupConfig 读它),展示名取自源码 APP_NAME;
2944
# names 即白名单 —— 源码里已无定义的残留项(lost_void / withered_domain)不列入。
@@ -98,11 +113,18 @@ March7th-Launcher:
98113
asset_ember_tracks_of_destiny_enable: 余烬·命运的足迹
99114
asset_lc3_star_superimpose_enable: 三星光锥叠加
100115

101-
# 鸣潮:一条龙(DailyTask)里的布尔开关。该文件没有统一前缀,且"每日任务后运行的附加
102-
# 任务"是列表、其余项是取值(刷什么 / 刷第几个),故靠 names 白名单挑出任务开关。
116+
# 鸣潮:一条龙(DailyTask)的开关分两处 —— 布尔项,以及「每日任务后运行的附加任务」
117+
# (多选,候选项见 src/task/DailyTask.py 的 options)。行名取自 i18n 的 zh_CN 译文。
103118
ok-ww:
104119
config: data/apps/ok-ww/working/configs/DailyTask.json
105-
task_pattern: "(.+)"
106-
names:
107-
Farm Nightmare Nest for Daily Echo: 使用梦魇巢穴获取日常声骸
120+
segments:
121+
- task_pattern: "(.+)"
122+
names:
123+
Farm Nightmare Nest for Daily Echo: 使用梦魇巢穴获取日常声骸
124+
- list_key: Additional Tasks to Run After Daily Task
125+
names:
126+
Check Weekly Garden: 检查每周乐园
127+
Auto Farm all Nightmare Nest: 自动刷所有梦魇巢穴
128+
Merge Echo If discarded > 1000: 已弃置声骸超过1000时融合
129+
Teleport and Farm 4C Echo: 传送并刷取4C声骸
108130

0 commit comments

Comments
 (0)