// 兵种表 import { readFileAndParse, parseNumberList, parseGoodStr} from '../util' import { FILENAME, ABI_STAGE } from '../../consts' import { RewardInter } from '../interface'; const _ = require('lodash'); export interface DicJob { // 兵种id readonly jobid: number; // 兵种名 readonly name: string; // 该兵种在大兵种中的阶段 readonly grade: number; // 解锁等级 readonly unlockLevel: number; // 兵种类别 readonly job_class: number; // 职业类别 readonly type: number; // 特性 readonly seid: Array; // 训练消耗 readonly trainingConsume: Array; // 升阶消耗 readonly upGradeConsume: Array; // 每阶升级属性 readonly ceAttr: Map } type KeysEnum = { [P in keyof Required]: true }; const DicJobKeys: KeysEnum = {jobid: true, name: true, grade: true, unlockLevel: true, job_class: true, type: true, seid: true,trainingConsume: true, upGradeConsume: true, ceAttr: true}; export const dicJob = new Map(); export const jobClassMaxGrades = new Map(); export const jobClassAndgrades = new Map(); export function loadJob() { let arr = readFileAndParse(FILENAME.DIC_JOB); arr.forEach(o => { o.seid = parseNumberList(o.seid); o.trainingConsume = parseGoodStr(o.trainingConsume); o.upGradeConsume = parseGoodStr(o.upGradeConsume); o.ceAttr = parseCeAttr(o); dicJob.set(o.jobid, _.pick(o, Object.keys(DicJobKeys))); let jobClass = jobClassMaxGrades.get(o.job_class); if (!jobClass || jobClass.grade < o.grade) { jobClassMaxGrades.set(o.job_class, {grade: o.grade,jobid: o.jobid}); } jobClassAndgrades.set(o.job_class+'_'+o.grade,{unlockLevel:o.unlockLevel, jobid:o.jobid}); }); arr = undefined; } function parseCeAttr(elem) { let ceAttr = new Map(); ceAttr.set(ABI_STAGE.HP, elem.hp); ceAttr.set(ABI_STAGE.ATK, elem.atk); ceAttr.set(ABI_STAGE.DEF, elem.def); ceAttr.set(ABI_STAGE.MDEF, elem.mdef); return ceAttr; }