战力计算,远征战力筛选

This commit is contained in:
luying
2020-11-12 18:21:05 +08:00
parent 40c16587b3
commit b0a0bbc71b
34 changed files with 22812 additions and 15964 deletions
+109
View File
@@ -1,5 +1,6 @@
import fs = require('fs');
import path = require('path');
import { ABI_TYPE } from '../consts/abilityConst';
let gamedata = {};
const wars = ['dic_zyz_gk_main', 'dic_zyz_gk_mainElite', 'dic_zyz_gk_daily', 'dic_zyz_gk_event', 'dic_zyz_gk_tower', 'dic_zyz_gk_expedition']; // 关卡相关的表
@@ -9,6 +10,10 @@ const towerTaskInfos = new Map<number, any>();
const heroInfos = new Map<number, any>();
const jobInfos = new Map<number, any>();
const levelInfos = new Map<number, {sum: number, cur: number}>();
const starRatioInfo = new Map<number, number>();
const heroSkillInfo = new Map<number, any>()
const seidInfo = new Map<number, any>();
const olySeidInfo = new Map<number, any>();
function parseWarData() {
let result = null;
@@ -48,6 +53,28 @@ function parseHeroData() {
const heroesData = gamedata['jsons'][heroFile] || [];
heroesData.forEach(elem => {
if (elem && elem.heroId) {
elem.baseAbilityArr = new Array<number>();
elem.baseAbilityUpArr = new Array<number>();
elem.baseAbilityArr[ABI_TYPE.ABI_HP] = elem.hp||0;
elem.baseAbilityArr[ABI_TYPE.ABI_ATK] = elem.atk||0;
elem.baseAbilityArr[ABI_TYPE.ABI_MATK] = elem.matk||0;
elem.baseAbilityArr[ABI_TYPE.ABI_DEF] = elem.def||0;
elem.baseAbilityArr[ABI_TYPE.ABI_MDEF] = elem.mdef||0;
elem.baseAbilityArr[ABI_TYPE.ABI_AGI] = elem.agi||0;
elem.baseAbilityArr[ABI_TYPE.ABI_LUK] = elem.luk||0;
elem.baseAbilityArr[ABI_TYPE.ABI_SPEED] = elem.speed||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_HP] = elem.hp_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_ATK] = elem.atk_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_MATK] = elem.matk_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_DEF] = elem.def_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_MDEF] = elem.mdef_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_AGI] = elem.agi_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_LUK] = elem.luk_up||0;
elem.baseAbilityUpArr[ABI_TYPE.ABI_SPEED] = elem.speed_up||0;
heroInfos.set(elem.heroId, elem);
}
});
@@ -76,6 +103,68 @@ function parseLevelInfo() {
});
}
function parseStarRatio() {
const file = 'dic_star_ratio';
const data = gamedata['jsons'][file] || [];
data.forEach(elem => {
if (elem && elem.star) {
starRatioInfo.set(elem.star, elem.ratio);
}
});
}
function parseHeroSkill() {
const file = 'dic_zyz_heroskill';
const data = gamedata['jsons'][file] || [];
data.forEach(elem => {
if (elem && elem.skillid) {
const seidLvUpArr = new Array<number>();
let skillArr = (elem.seid as string).split('&');
let lvUpArr = (elem.selv_up as string).split('&');
for(let i = 0;i < skillArr.length;i++){
if(skillArr[i]==="") continue;
seidLvUpArr.push(parseInt(skillArr[i]));
if(lvUpArr[i]){
seidLvUpArr.push(parseInt(lvUpArr[i]));
}
else{
seidLvUpArr.push(1000);
}
}
heroSkillInfo.set(elem.skillid, {seidLvUpArr});
}
});
}
function parseSeidList() {
const file = 'dic_zyz_se';
const data = gamedata['jsons'][file] || [];
data.forEach(elem => {
if (elem && elem.id) {
let {gainvalue} = elem;
let gainValueArr = (gainvalue as string).split('&');
elem.gainValueArr = new Array();
for(let g of gainValueArr) {
if(g === "") continue;
elem.gainValueArr.push(parseInt(g));
}
seidInfo.set(elem.id, elem);
}
});
}
function parseOlySeidList() {
const file = 'dic_zyz_se_add';
const data = gamedata['jsons'][file] || [];
data.forEach(elem => {
if (elem && elem.type) {
olySeidInfo.set(elem.type, elem);
}
});
}
function initData (folder: string) {
if(!gamedata.hasOwnProperty(folder)) {
gamedata[folder] = {};
@@ -107,6 +196,10 @@ function parseData() {
parseHeroData();
parseJobData();
parseLevelInfo();
parseStarRatio();
parseHeroSkill();
parseSeidList();
parseOlySeidList();
}
initData('jsons'); // 加载一般json
@@ -173,4 +266,20 @@ export function getLvByExp(exp: number) {
export function getExpByLv(lv: number) {
return levelInfos.get(lv);
}
export function getStarRatio(star: number) {
return starRatioInfo.get(star);
}
export function getHeroSkillById(skillId: number) {
return heroSkillInfo.get(skillId);
}
export function getSeidById(id: number) {
return seidInfo.get(id);
}
export function getOlySeidByType(type: number) {
return olySeidInfo.get(type);
}