添加字典表解析
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
// 关卡表
|
||||
import {decodeArrayListStr, readJsonFile} from '../util'
|
||||
import { WAR_RELATE_TABLES } from '../../consts/consts';
|
||||
|
||||
export interface DicWar {
|
||||
|
||||
// 关卡id
|
||||
readonly war_id: number;
|
||||
// 关卡固定奖励
|
||||
readonly fixReward: Array<{id: number, count: number}>;
|
||||
// 关卡条件奖励
|
||||
readonly conditionReward: Array<{id: number, count: number, condition: number}>;
|
||||
// 关卡随机奖励
|
||||
readonly randomReward: Array<{id: number, count: number, frequency: number}>;
|
||||
// 关卡类型
|
||||
readonly warType: number;
|
||||
// 关卡名
|
||||
readonly gk_name: string;
|
||||
// 胜利后获得的君主经验
|
||||
readonly kingExp: number;
|
||||
// 进入战场所需的最低等级
|
||||
readonly lvLimited: number;
|
||||
// 消耗的体力
|
||||
readonly cost: number;
|
||||
// 前置关卡
|
||||
readonly previousGk: number;
|
||||
// 每日任务下的小类型
|
||||
readonly dailyType: number;
|
||||
|
||||
}
|
||||
|
||||
export const dicWar = new Map<number, DicWar>();
|
||||
|
||||
for(let filename of WAR_RELATE_TABLES) {
|
||||
const str = readJsonFile(filename);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
arr.forEach(o => {
|
||||
o.fixReward = parseFixReward(o.fixReward);
|
||||
o.conditionReward = parseConditionReward(o.conditionReward);
|
||||
o.parseRandomReward = parseRandomReward(o.parseRandomReward);
|
||||
dicWar.set(o.war_id, o);
|
||||
});
|
||||
}
|
||||
|
||||
function parseFixReward(str: string) {
|
||||
let result = new Array<{id: number, count: number}>();
|
||||
if(!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for(let [id, count] of decodeArr) {
|
||||
if(isNaN(parseInt(id)) || isNaN(parseInt(count))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({id: parseInt(id), count: parseInt(count)});
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
function parseConditionReward(str: string) {
|
||||
let result = new Array<{id: number, count: number, condition: number}>();
|
||||
if(!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for(let [id, count, condition] of decodeArr) {
|
||||
if(isNaN(parseInt(id)) || isNaN(parseInt(count)) || isNaN(parseInt(condition))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({id: parseInt(id), count: parseInt(count), condition: parseInt(condition)});
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
function parseRandomReward(str: string) {
|
||||
let result = new Array<{id: number, count: number, frequency: number}>();
|
||||
if(!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for(let [id, count, frequency] of decodeArr) {
|
||||
if(isNaN(parseInt(id)) || isNaN(parseInt(count)) || isNaN(parseInt(frequency))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({id: parseInt(id), count: parseInt(count), frequency: parseInt(frequency)});
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user