/** * 科技树配置 */ import { parseGoodStr, parseNumberList, readFileAndParse } from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../interface'; const _ = require('lodash'); export interface DicRougeTech { readonly id: number; readonly techId: number; // 科技点 readonly rowId: number; // 列 readonly index: number; // 第几个 readonly preTechId: number[]; // 前置节点 readonly cost: RewardInter[]; // 消耗的科技点 } type KeysEnum = { [P in keyof Required]: true }; const DicRougeTechKeys: KeysEnum = { id: true, techId: true, rowId: true, index: true, preTechId: true, cost: true, } export const dicRougeTech = new Map(); export const dicRougeTechIdByRow = new Map(); export function loadRougeTech() { dicRougeTech.clear(); dicRougeTechIdByRow.clear(); let arr = readFileAndParse(FILENAME.DIC_ROUGE_TECH); arr.forEach(o => { o.preTechId = parseNumberList(o.preTechId); o.cost = parseGoodStr(o.cost); dicRougeTech.set(o.techId, _.pick(o, Object.keys(DicRougeTechKeys))); if(!dicRougeTechIdByRow.has(o.rowId)) dicRougeTechIdByRow.set(o.rowId, []); dicRougeTechIdByRow.get(o.rowId)?.push(o.techId); }); arr = undefined; }