// 武将表 import { ABI_TYPE, FILENAME } from '../../consts' import { readJsonFile } from '../util' const _ = require('lodash'); export interface DicHero { // 武将id readonly heroId: number; // 武将名 readonly name: string; // 初始品质 readonly quality: number; // 阵营 readonly camp: number; // 兵种 readonly jobid: number; // 技能 readonly skill: number; // 武将碎片 readonly pieceId: number; // 初始星级 readonly initialStars: number; // 合成碎片数量 readonly pieceCount: number; // 主属性 readonly baseAbilityArr:Map; readonly baseAbilityUpArr:Map; readonly initialSkin: number; } const str = readJsonFile(FILENAME.DIC_HERO); let arr = JSON.parse(str); type KeysEnum = { [P in keyof Required]: true }; const DicHeroKeys: KeysEnum = {heroId: true, name: true, quality: true, camp: true, jobid: true, skill: true, pieceId: true, initialStars: true, pieceCount: true, baseAbilityArr: true, baseAbilityUpArr: true, initialSkin: true}; export const dicHero = new Map(); arr.forEach(o => { o.baseAbilityArr = parseBaseAbilityArr(o); o.baseAbilityUpArr = parseBaseAbilityUpArr(o); dicHero.set(o.heroId, _.pick(o, Object.keys(DicHeroKeys))); }); function parseBaseAbilityArr(json) { let map = new Map(); map.set(ABI_TYPE.ABI_HP, json.hp||0); map.set(ABI_TYPE.ABI_ATK, json.atk||0); map.set(ABI_TYPE.ABI_MATK, json.matk||0); map.set(ABI_TYPE.ABI_DEF, json.def||0); map.set(ABI_TYPE.ABI_MDEF, json.mdef||0); map.set(ABI_TYPE.ABI_AGI, json.agi||0); map.set(ABI_TYPE.ABI_LUK, json.luk||0); map.set(ABI_TYPE.ABI_SPEED, json.speed||0); return map } function parseBaseAbilityUpArr(json) { let map = new Map(); map.set(ABI_TYPE.ABI_HP, json.hp_up||0); map.set(ABI_TYPE.ABI_ATK, json.atk_up||0); map.set(ABI_TYPE.ABI_MATK, json.matk_up||0); map.set(ABI_TYPE.ABI_DEF, json.def_up||0); map.set(ABI_TYPE.ABI_MDEF, json.mdef_up||0); map.set(ABI_TYPE.ABI_AGI, json.agi_up||0); map.set(ABI_TYPE.ABI_LUK, json.luk_up||0); map.set(ABI_TYPE.ABI_SPEED, json.speed_up||0); return map }