Files
ZYZ/shared/pubUtils/dictionary/DicEvent.ts
2020-12-15 15:22:28 +08:00

56 lines
1.5 KiB
TypeScript

// 奇遇表
import { parseReward, decodeArrayStr, readJsonFile, parseNumberList } from '../util'
import { FILENAME } from '../../consts/consts'
import { RewardInter } from '../../pubUtils/interface';
interface SuitLevel {
readonly min: number;
readonly max?: number;
}
export interface DicEvent {
// 事件id
readonly eventID: number;
// 事件类型
readonly eventType: number;
// 事件品质
readonly quality: number;
// 事件名
readonly name: string;
// 胜利奖励
readonly winReward: Array<RewardInter>;
// 失败奖励
readonly loseReward: Array<RewardInter>;
// 适用等级
readonly suitLevel: SuitLevel;
// 关联关卡id
readonly warId: number;
// 权重
readonly weight: number;
// 移动点
readonly movePointArray: Array<number>;
}
const str = readJsonFile(FILENAME.DIC_EVENT);
let arr = JSON.parse(str);
export const dicEvent = new Map<number, DicEvent>();
arr.forEach(o => {
o.winReward = parseReward(o.winReward);
o.loseReward = parseReward(o.loseReward);
o.suitLevel = parseSuitLevel(o.suitLevel);
o.movePointArray = parseNumberList(o.movePointArray);
dicEvent.set(o.eventID, o);
});
function parseSuitLevel(str: string) {
let decodeArr = decodeArrayStr(str, '&');
let [min, max] = decodeArr;
let suitLevel: SuitLevel;
if(isNaN(parseInt(min)) || isNaN(parseInt(max))) throw new Error('data table format wrong');
suitLevel = ({min: parseInt(min), max: parseInt(max)});
return suitLevel;
}