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
CT`(2^
literal 0
HcmV?d00001
diff --git a/repo/js/AutoPlan/assets/out_domain.jpg b/repo/js/AutoPlan/assets/out_domain.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d082b9269a8efa2b778b6eaf5d8fe84dcea0c9de
GIT binary patch
literal 2489
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
P00000NkvXXu0mjf4hW1q
literal 0
HcmV?d00001
diff --git a/repo/js/AutoPlan/config/config.js b/repo/js/AutoPlan/config/config.js
new file mode 100644
index 000000000..9512d3084
--- /dev/null
+++ b/repo/js/AutoPlan/config/config.js
@@ -0,0 +1,279 @@
+import {ocrUid} from "../utils/uid";
+
+const config = {
+ //setting设置放在这个json
+ run: {
+ loop_plan: false,//启用循环体力计划
+ retry_count: 3,//复活重试次数
+ config: '',
+ // load_uid_config: false,
+ loads: [],//加载方式list
+ },
+ bgi_tools: {
+ //授权token
+ token: {
+ name: 'Authorization',
+ value: ''
+ },
+ api: {
+ httpPullJsonConfig: undefined,
+ httpPushAllJsonConfig: undefined,
+ httpPushAllCountryConfig: undefined,
+ },
+ open: {open_push: false}
+ },
+ info: {
+ key: undefined,//密钥
+ manifest: {},
+ settings: undefined
+ },
+ user: {
+ uid: undefined,
+ physical: {
+ min: 20,//最小体力
+ current: 0,//当前体力
+ names: ["原粹树脂", "浓缩树脂", "须臾树脂", "脆弱树脂"]
+ },
+ runTypes: ['秘境', '地脉']
+ },
+ //
+ path: {
+ manifest: "manifest.json",
+ domain: "config/domain.json",
+ runConfig: "config/run_config.json",
+ countryList: "config/countryList.json"
+ },
+ //所有秘境信息
+ domainList: [],
+ //所有秘境名称
+ domainNames: new Set(),
+ //物品名称(只记录顶级的名称->金色物品名称)
+ itemNames: new Set(),
+ //秘境名称映射物品列表
+ domainMap: new Map(),
+ //秘境名称映射秘境列表顺序
+ domainOrderMap: new Map(),
+ //物品名称映射秘境名称
+ domainItemsMap: new Map(),
+}
+
+const LoadType = Object.freeze({
+ uid: 'uid',//uid加载
+ input: 'input',//input加载
+ bgi_tools: 'bgi_tools',//bgi_tools加载
+ fromValue(value) {
+ return Object.keys(this).find(key => this[key] === value);
+ }
+})
+const LoadMap = new Map([
+ ['UID加载', LoadType.uid],
+ ['输入加载', LoadType.input],
+ ['bgi_tools加载', LoadType.bgi_tools],
+])
+
+/**
+ * 初始化设置函数
+ * 从配置文件中读取设置信息并返回
+ * @returns {Object} 返回解析后的JSON设置对象
+ */
+async function initSettings() {
+ // 默认设置文件路径
+ let settings_ui = "settings.json";
+ try {
+ // 读取并解析manifest.json文件
+ config.info.manifest = JSON.parse(file.readTextSync(config.path.manifest));
+ // 调试日志:输出manifest内容
+ log.debug("manifest={key}", config.info.manifest);
+ // 调试日志:输出manifest中的settings_ui配置
+ log.debug("settings_ui={key}", config.info.manifest.settings_ui);
+ log.info(`|脚本名称:{name},版本:{version}`, config.info.manifest.name, config.info.manifest.version);
+ if (config.info.manifest.bgi_version) {
+ log.info(`|最小可执行BGI版本:{bgi_version}`, config.info.manifest.bgi_version);
+ }
+ log.info(`|脚本作者:{authors}\n`, config.info.manifest.authors.map(a => a.name).join(","));
+ // 更新settings_ui变量为manifest中指定的路径
+ settings_ui = config.info.manifest.settings_ui
+ } catch (error) {
+ // 捕获并记录可能的错误
+ log.warn("{error}", error.message);
+ }
+ // 读取并解析设置文件
+ const settingsJson = JSON.parse(file.readTextSync(settings_ui));
+ // 如果configSettings未定义,则将其设置为解析后的设置对象
+ if (!config.info.settings) {
+ config.info.settings = settingsJson
+ }
+ // 调试日志:输出最终解析的设置对象
+ log.debug("settingsJson={key}", settingsJson);
+ // 返回设置对象
+ return settingsJson
+}
+
+/**
+ * 获取多复选框的映射表
+ * 该函数会从初始化的设置中提取所有类型为"multi-checkbox"的条目,
+ * 并将这些条目的名称和对应的选项值存储在一个Map对象中返回
+ * @returns {Promise