43 lines
1.4 KiB
TypeScript
43 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 }[];
|
|
}
|
|
|
|
export const dicEquipSuit = new Map<number, DicEquipSuit>();
|
|
export const dicEquipSuitByJobClass = new Map<number, number>();
|
|
export function loadEquipSuit() {
|
|
dicEquipSuit.clear();
|
|
dicEquipSuitByJobClass.clear();
|
|
let arr = readFileAndParse(FILENAME.DIC_EQUIP_SUIT);
|
|
|
|
arr.forEach(o => {
|
|
o.equips = parseNumberList(o.equips);
|
|
o.effect = parseEffect(o.effect);
|
|
dicEquipSuit.set(o.id, o);
|
|
dicEquipSuitByJobClass.set(o.jobClass, o.id);
|
|
});
|
|
arr = undefined;
|
|
}
|
|
|
|
function parseEffect(str: string) {
|
|
let result = new Array<{star: number, seid: number}>();
|
|
if(!str) return result;
|
|
let decodeArr = decodeArrayListStr(str);
|
|
for(let [star, seid] of decodeArr) {
|
|
if(isNaN(parseInt(star)) || isNaN(parseInt(seid))) {
|
|
throw new Error('data table format wrong');
|
|
}
|
|
result.push({star: parseInt(star), seid: parseInt(seid)});
|
|
}
|
|
return result
|
|
} |