77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
// 物品表
|
||
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;
|
||
// 是否可以许愿
|
||
readonly canHope: number;
|
||
}
|
||
|
||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||
const DicArtifactKeys: KeysEnum<DicArtifact> = {
|
||
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,
|
||
canHope: true
|
||
}
|
||
export const dicArtifact = new Map<number, DicArtifact>();
|
||
export const dicArtifactByGid = new Map<number, number>();
|
||
export const dicArtifactByGidAndType = new Map<string, number>();
|
||
export const dicArtifactsByGroup = new Map<string, DicArtifact>();
|
||
|
||
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;
|
||
}
|