// 物品表 import { readFileAndParse, parseNumberList, } from '../util' import { FILENAME, } from '../../consts' const _ = require('lodash'); export interface DicArtifact { // 宝物idt,其中形态1和goodId必须一致 readonly artifactId: number; // 宝物名 readonly name: string; // 物品表id,不同品质&品阶的同名宝物的物品id不同 readonly goodId: number; // 同名宝物,比如史记,可以直接写shiji,不过要当心多音词,注意唯一性 readonly group: string; // 形态 readonly type: number; // 是否是初始形态,用于服务器获取 readonly isDefaultType: boolean; // 品质,每个宝物id直接对应一种品质 readonly quality: number; // 品阶,每个宝物id直接对应一种品阶 readonly qualityStage: number; // 专属职业 readonly jobClass: number; // 专属武将 readonly hid: number; // 词条:seid&seid readonly seids: number[]; // 等级配置方案 readonly lvAttrPlan: number; // 升品配置方案 readonly qualityAttrPlan: number; } type KeysEnum = { [P in keyof Required]: true }; const DicArtifactKeys: KeysEnum = { artifactId: true, name: true, goodId: true, group: true, type: true, isDefaultType: true, quality: true, qualityStage: true, jobClass: true, hid: true, seids: true, lvAttrPlan: true, qualityAttrPlan: true, } export const dicArtifact = new Map(); export const dicArtifactByGid = new Map(); export const dicArtifactByGidAndType = new Map(); export const dicArtifactsByGroup = new Map(); export function loadArtifact() { dicArtifact.clear(); dicArtifactByGid.clear(); dicArtifactByGidAndType.clear(); dicArtifactsByGroup.clear(); let arr = readFileAndParse(FILENAME.DIC_ARTIFACT); arr.forEach(o => { o.seids = parseNumberList(o.seids); if(o.isDefaultType) dicArtifactByGid.set(o.goodId, o.artifactId); dicArtifactByGidAndType.set(`${o.goodId}_${o.type}`, o.artifactId); dicArtifact.set(o.artifactId, _.pick(o, Object.keys(DicArtifactKeys))); dicArtifactsByGroup.set(`${o.group}_${o.type}_${o.quality}_${o.qualityStage}`, o); }); arr = undefined; }