// 镇念塔表 import { decodeArrayListStr, readFileAndParse, parseNumberList } from '../util' import { FILENAME } from '../../consts'; export interface DicSuit { // 套装id readonly id: number; // 套装类型,相同suitType效果可跨级用 readonly suitType: number; // 星级,相同suitType starLevel较高的套装可覆盖较低的效果 readonly starLevel: number; // 包含关卡 readonly name: string; // 总件数 readonly totalCount: number; // 套装效果 readonly effect: Array<{ count: number, seid: number }>; readonly tireInfo: Array; } export const dicSuit = new Map(); export const dicSuitByTypeAndLv = new Map(); export function loadSuit() { dicSuit.clear(); dicSuitByTypeAndLv.clear(); let arr = readFileAndParse(FILENAME.DIC_SUIT); arr.forEach(o => { o.effect = parseSuitEffect(o.effect); o.tireInfo = parseNumberList(o.tireInfo); dicSuit.set(o.id, o); dicSuitByTypeAndLv.set(`${o.suitType}_${o.starLevel}`, o); }); arr = undefined; } function parseSuitEffect(str: string) { let result = new Array<{ count: number, seid: number }>(); if (!str) return result; let decodeArr = decodeArrayListStr(str); for (let [count, seid] of decodeArr) { if (isNaN(parseInt(count)) || isNaN(parseFloat(seid))) { throw new Error('data table format wrong'); } result.push({ count: parseInt(count), seid: parseFloat(seid) }); } return result }