// 装备套装表 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, id: number, val: number }[]; } export const dicEquipSuit = new Map(); export const dicEquipSuitByJobClass = new Map(); 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, id: number, val: number}>(); if(!str) return result; let decodeArr = decodeArrayListStr(str); for(let [star, id, val] of decodeArr) { if(isNaN(parseInt(star)) || isNaN(parseInt(id)) || isNaN(parseFloat(val))) { throw new Error('data table format wrong'); } result.push({star: parseInt(star), id: parseInt(id), val: parseFloat(val)}); } return result }