Files
ZYZ/shared/pubUtils/dictionary/DicRougeTech.ts
2023-08-30 11:02:52 +08:00

47 lines
1.3 KiB
TypeScript

/**
* 科技树配置
*/
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<T> = { [P in keyof Required<T>]: true };
const DicRougeTechKeys: KeysEnum<DicRougeTech> = {
id: true,
techId: true,
rowId: true,
index: true,
preTechId: true,
cost: true,
}
export const dicRougeTech = new Map<number, DicRougeTech>();
export const dicRougeTechIdByRow = new Map<number, number[]>();
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;
}