diff --git a/repo/js/AutoPlanDomain/config/config.js b/repo/js/AutoPlanDomain/config/config.js index 0254dfb41..3aa41ea4a 100644 --- a/repo/js/AutoPlanDomain/config/config.js +++ b/repo/js/AutoPlanDomain/config/config.js @@ -4,7 +4,8 @@ const config = { //setting设置放在这个json domain: { config: '', - load_uid_config: false + // load_uid_config: false, + loads: [],//加载方式list }, info: { key: undefined,//密钥 @@ -34,6 +35,18 @@ const config = { domainItemsMap: new Map(), } +const LoadType = Object.freeze({ + uid: 'uid',//uid加载 + input: 'input',//input加载 + fromValue(value) { + return Object.keys(this).find(key => this[key] === value); + } +}) +const LoadMap = new Map([ + ['UID加载', LoadType.uid], + ['输入加载', LoadType.input], +]) + /** * 初始化设置函数 * 从配置文件中读取设置信息并返回 @@ -414,14 +427,14 @@ async function initConfig() { if (config.domainList.length <= 0) { throw new Error("配置文件缺失或读取异常!") } - config.domain.load_uid_config = settings.load_uid_config || config.domain.load_uid_config - if (config.domain.load_uid_config){ - config.user.uid = await ocrUid() - } + let loadList = await getValueByMultiCheckboxName('auto_load')|| [] + const loads= loadList.map(item => LoadMap.get(item)) + config.domain.loads = loads + config.user.uid = await ocrUid() } export { - config, + config, LoadType, LoadMap, checkKey, initSettings, getMultiCheckboxMap, diff --git a/repo/js/AutoPlanDomain/main.js b/repo/js/AutoPlanDomain/main.js index e3acb516e..543fb9817 100644 --- a/repo/js/AutoPlanDomain/main.js +++ b/repo/js/AutoPlanDomain/main.js @@ -1,4 +1,5 @@ -import {config, initConfig, initSettings} from './config/config'; +import {config, initConfig, initSettings, LoadType} from './config/config'; +import {ocrUid} from './utils/uid'; /** * 自动执行秘境任务的异步函数 @@ -35,7 +36,7 @@ async function autoDomainList(autoDomainOrderList) { * @param {string} domainConfig - 输入的字符串,包含秘境顺序信息 * @returns {Array} 返回处理后的秘境顺序列表 */ -function initDomainOrderList(domainConfig) { +async function initDomainOrderList(domainConfig) { const autoFightOrderSet = new Set() // 存储秘境顺序列表的数组 /* let te = { order: 1, // 顺序值 @@ -46,75 +47,84 @@ function initDomainOrderList(domainConfig) { DomainRoundNum: undefined,//副本轮数 } // 秘境信息对象 }*/ - const uid = config.user.uid - if (uid) { - const configAutoFightOrderMap = JSON.parse(file.readTextSync(config.path.domainConfig)) || new Map() - const uidConfigList = configAutoFightOrderMap.get(uid) || []; - if (uidConfigList?.length > 0) { - uidConfigList.forEach(item => { - // 将秘境顺序对象添加到列表中 - autoFightOrderSet.add(item) - }) - } - } - - if (domainConfig) { - // 处理输入字符串:去除首尾空格,将中文逗号替换为英文逗号,然后按逗号分割 - domainConfig.trim().replaceAll(',', ',').split(",").forEach( - item => { - // 将当前项按"|"分割成数组 - let arr = item.split("|") - // 创建秘境信息对象 - let autoFight = { - domainName: undefined,//秘境名称 - partyName: undefined,//队伍名称 - sundaySelectedValue: undefined,//周日|限时选择的值 - DomainRoundNum: undefined,//副本轮数 + // let Load = LoadType.uid + for (const Load of config.domain.loads) { + switch (Load) { + case LoadType.uid: + const uid = config.user.uid || (await ocrUid()) + const configAutoFightOrderMap = JSON.parse(file.readTextSync(config.path.domainConfig)) || new Map() + const uidConfigList = configAutoFightOrderMap.get(uid) || []; + if (uidConfigList?.length > 0) { + uidConfigList.forEach(item => { + // 将秘境顺序对象添加到列表中 + autoFightOrderSet.add(item) + }) } - let partyName = arr[0]; - let domainName = arr[1]; - let domainRoundNum = arr[2]; - let sundaySelectedValue = arr[3]; - let order = (() => { - const rawOrder = arr[4]; // 获取原始值 - if (rawOrder == null || String(rawOrder).trim() === "") { - return 0; // 若为空或无效值,默认返回 0 - } - const parsedOrder = parseInt(String(rawOrder).trim(), 10); // 转换为整数 - return isNaN(parsedOrder) ? 0 : parsedOrder; // 若转换失败,返回默认值 0 - })(); + break + case LoadType.input: + if (domainConfig) { + // 处理输入字符串:去除首尾空格,将中文逗号替换为英文逗号,然后按逗号分割 + domainConfig.trim().replaceAll(',', ',').split(",").forEach( + item => { + // 将当前项按"|"分割成数组 + let arr = item.split("|") + // 创建秘境信息对象 + let autoFight = { + domainName: undefined,//秘境名称 + partyName: undefined,//队伍名称 + sundaySelectedValue: undefined,//周日|限时选择的值 + DomainRoundNum: undefined,//副本轮数 + } + let partyName = arr[0]; + let domainName = arr[1]; + let domainRoundNum = arr[2]; + let sundaySelectedValue = arr[3]; + let order = (() => { + const rawOrder = arr[4]; // 获取原始值 + if (rawOrder == null || String(rawOrder).trim() === "") { + return 0; // 若为空或无效值,默认返回 0 + } + const parsedOrder = parseInt(String(rawOrder).trim(), 10); // 转换为整数 + return isNaN(parsedOrder) ? 0 : parsedOrder; // 若转换失败,返回默认值 0 + })(); - if (!config.domainNames.has(domainName)) { - //秘境名称没有记录 查询是否是物品名称 - if (config.itemNames.has(domainName)) { - const domainNameTemp = config.domainItemsMap.get(domainName); - if (!domainNameTemp) { - throw new Error(`${domainName} 输入错误`); + if (!config.domainNames.has(domainName)) { + //秘境名称没有记录 查询是否是物品名称 + if (config.itemNames.has(domainName)) { + const domainNameTemp = config.domainItemsMap.get(domainName); + if (!domainNameTemp) { + throw new Error(`${domainName} 输入错误`); + } + const domainSelectedValue = parseInt(config.domainOrderMap.get(domainName) + ""); + sundaySelectedValue = domainSelectedValue + domainName = domainNameTemp + } else { + throw new Error(`${domainName} 输入错误`); + } + } + + // 设置秘境信息的各个属性 + autoFight.partyName = partyName // 队伍名称 + autoFight.domainName = domainName // 秘境名称 + autoFight.DomainRoundNum = domainRoundNum // 副本轮数 + autoFight.sundaySelectedValue = sundaySelectedValue // 周日|限时选择的值 + // 创建秘境顺序对象 + let autoFightOrder = { + order: order, // 顺序值 + autoFight: autoFight // 秘境信息对象 + } + // 将秘境顺序对象添加到列表中 + autoFightOrderSet.add(autoFightOrder) + // autoFightOrderSet.push(autoFightOrder) } - const domainSelectedValue = parseInt(config.domainOrderMap.get(domainName) + ""); - sundaySelectedValue = domainSelectedValue - domainName = domainNameTemp - } else { - throw new Error(`${domainName} 输入错误`); - } + ) } - - // 设置秘境信息的各个属性 - autoFight.partyName = partyName // 队伍名称 - autoFight.domainName = domainName // 秘境名称 - autoFight.DomainRoundNum = domainRoundNum // 副本轮数 - autoFight.sundaySelectedValue = sundaySelectedValue // 周日|限时选择的值 - // 创建秘境顺序对象 - let autoFightOrder = { - order: order, // 顺序值 - autoFight: autoFight // 秘境信息对象 - } - // 将秘境顺序对象添加到列表中 - autoFightOrderSet.add(autoFightOrder) - // autoFightOrderSet.push(autoFightOrder) - } - ) + break + default: + throw new Error("请先配置加载方式"); + break; + } } // 检查是否已配置秘境 diff --git a/repo/js/AutoPlanDomain/settings.json b/repo/js/AutoPlanDomain/settings.json index cda6a76b0..f93b43842 100644 --- a/repo/js/AutoPlanDomain/settings.json +++ b/repo/js/AutoPlanDomain/settings.json @@ -5,4 +5,11 @@ "label": "自动秘境计划配置\n语法:队伍名称|秘境名称/刷取物品名称|刷几轮|限时/周日(1-3和本体的一致)|执行顺序(越大越先执行),...\n(无配置可留空如||唯有秘境名称配置不可为空)\n如: 速刷|苍白的遗荣|1||9", "default": "" }, + { + "name": "auto_load", + "type": "multi-checkbox", + "label": "加载模式\n全选时相同的配置输入加载会覆盖UID加载\n自动秘境计划配置(属于输入加载)\nconfig/domain_config.json(属于UID加载)", + "option": ["输入加载","UID加载"] , + "default": ["输入加载","UID加载"] + } ] \ No newline at end of file