Files
ZYZ/shared/pubUtils/dictionary/DicEquipSuit.ts
2022-02-15 18:46:56 +08:00

44 lines
1.4 KiB
TypeScript

// 装备套装表
import { readFileAndParse, parseNumberList, decodeArrayListStr } from '../util'
import { FILENAME } from '../../consts'
export interface DicEquipSuit {
// id
readonly id: number;
// 匹配的武将的职业的大类
readonly jobClass: number;
// 套装内含的装备编号
readonly equips: number[];
// 按星级可解锁的属性
readonly effect: { star: number, seid: number }[];
// 解锁条件索引
readonly effectCondition: Map<number, number>
}
export const dicEquipSuit = new Map<number, DicEquipSuit>();
export function loadEquipSuit() {
dicEquipSuit.clear();
let arr = readFileAndParse(FILENAME.DIC_EQUIP);
arr.forEach(o => {
o.equips = parseNumberList(o.equips);
parseRandomEffect(o, o.effect);
dicEquipSuit.set(o.jobClass, o);
});
arr = undefined;
}
function parseRandomEffect(o: any, str: string) {
if (!str) return null;
let decodeArr = decodeArrayListStr(str);
let effect: number[] = [], effectCondition = new Map<number, number>();
for (let [star, seid] of decodeArr) {
if (isNaN(parseInt(star)) || isNaN(parseFloat(seid))) {
throw new Error('data table format wrong');
}
effect.push(parseInt(seid));
effectCondition.set(parseInt(seid), parseInt(star));
}
o.effect = effect;
o.effectCondition = effectCondition;
}