Q2TG/src/utils/flagControl.ts

46 lines
1.0 KiB
TypeScript

import flags from '../constants/flags';
import { Pair } from '../models/Pair';
import Instance from '../models/Instance';
const displayFlag = (flag: number) => {
const enabled = [];
for (const name in flags) {
const value = flags[name] as any as number;
if (flag & value) {
enabled.push(name);
}
}
return ['0b' + flag.toString(2), ...enabled].join('\n');
};
export const editFlags = async (params: string[], target: Pair | Instance) => {
if (!params.length) {
return displayFlag(target.flags);
}
if (params.length !== 2) return '参数格式错误';
let operand = Number(params[1]);
if (isNaN(operand)) {
operand = flags[params[1].toUpperCase()];
}
if (isNaN(operand)) return 'flag 格式错误';
switch (params[0]) {
case 'add':
case 'set':
target.flags |= operand;
break;
case 'rm':
case 'remove':
case 'del':
case 'delete':
target.flags &= ~operand;
break;
case 'put':
target.flags = operand;
break;
}
return displayFlag(target.flags);
};