SOURCE

console 命令行工具 X clear

                    
>
console
const vs = require("../systemScripts/variable");

const IDS_REG = /^(\d+,\d+\|)*\d+,\d+$/;

const spliteVariableStr = str => {
    if (!IDS_REG.test(str)) {
        throw Error("无效的变量id字符串");
    }

    let result = [];
    let ranges = str.split('|');
    for (let range of ranges) {
        let rangeCon = range.split(',');
        let start = Number(rangeCon[0]);
        let end = Number(rangeCon[1]);

        if (Number.isNaN(start) || Number.isNaN(end) || end < start) {
            throw Error("无效的变量id字符串");
        }

        for (let i = start; i <= end; i++) {
            result.push(i);
        }
    }

    return result;
};


module.exports = {
    main: async function(originOutput, targetOutput, changeOutputNum, originVarIdString, targetVarIdString){
        if(!originOutput || !changeOutputNum){
            return;
        }

        if(!targetOutput){
            targetOutput = 0;
        }

        if((originOutput >= targetOutput) && (originOutput - changeOutputNum < targetOutput)){
            return;
        }


        originVarIds = spliteVariableStr(originVarIdString);
        targetVarIds = spliteVariableStr(targetVarIdString);
        originVarIdString = originVarIds.join(',');

        if(originVarIds.length !== targetVarIds.length){
            return;
        }

        let idMap = {}
        for(let i=0; i<originVarIds.length; i++){
            idMap[originVarIds[i]] = targetVarIds[i];
        }

        let variables = await vs.getVariablesByIds(originVarIdString);

        let promiseList = [];
        for(let item of variables){
            let originValue = item.value;
            let targetVarId = idMap[item.id];

            promiseList.push(vs.setVariable(targetVarId, originValue));
        }

        await Promise.all(promiseList);
    }
}
originOutput:782; targetOutput:493; changeOutputNum:null; originVarIdString:3743,3743|3757,3757|3770,3770|390,390; targetVarIdString:3785,3785|3801,3801|3820,3820|3837,3837