From d7971fdf71b62e6ebdff91084fff9a61acf94b06 Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Fri, 29 Sep 2023 23:52:39 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=85=B3=E4=BA=8E=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E7=82=B9=E8=A7=A3=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3.4-任务流程协议.md | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/docs/3.4-任务流程协议.md b/docs/3.4-任务流程协议.md index aba51a6fcc..23f698449a 100644 --- a/docs/3.4-任务流程协议.md +++ b/docs/3.4-任务流程协议.md @@ -233,6 +233,48 @@ Task.get_raw("B@Loading")->next = { "B#self", "B#next", "B#back" }; 以上这种情况, `"C@B" -> next`(即 `C@A#next`)为 `[ "N1" ]` 而不是 `[ "C@N0" ]`. +## 运行时修改任务 + +- `Task.lazy_parse()` 可以在运行时加载 json 任务配置文件。 lazy_parse 规则与[多文件任务](#多文件任务)相同。 +- `Task.set_task_base()` 可以修改任务的 `baseTask` 字段。 + +### 使用示例 + +假设有任务配置文件如下: + +```json +{ + "A": { + "baseTask": "A_default" + }, + "A_default": { + "next": [ "xxx" ] + }, + "A_mode1": { + "next": [ "yyy" ] + }, + "A_mode2": { + "next": [ "zzz" ] + } +} + ``` + +以下代码可以实现根据 mode 的值改变任务 "A",同时会改变其它依赖任务 "A" 的任务,如 "B@A": + +```cpp +switch (mode) { +case 1: + Task.set_task_base("A", "A_mode1"); // 基本上相当于用 A_mode1 的内容直接替换 A,下同 + break; +case 2: + Task.set_task_base("A", "A_mode2"); + break; +default: + Task.set_task_base("A", "A_default"); + break; +} +``` + ## 表达式计算 | 符号 | 含义 | 实例 |