47 lines
1.3 KiB
TypeScript
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;
|
|
} |