56 lines
1.5 KiB
TypeScript
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;
|
|
} |