import { dicHero, dicMyHeroes, loadHero } from "./dictionary/DicHero"; import { dicGoods, blueprt, dicJewel, figureCondition, loadGoods } from "./dictionary/DicGoods"; import { dicBlueprtCompose, loadBlueprtCompose } from "./dictionary/DicBlueprtCompose"; import { dicBlueprtPossibility, loadBlueprtPossibility } from "./dictionary/DicBlueprtPossibility"; import { dicDaily, loadDaily } from "./dictionary/DicDaily"; import { dicEvent, dicEventList, loadEvent } from "./dictionary/DicEvent"; import { dicExpedition, DicExpedition, loadExpedition } from "./dictionary/DicExpedition"; import { dicExpeditionPoint, loadExpeditionPoint } from "./dictionary/DicExpeditionPoint"; import { dicFuncSwitch, loadFuncSwitch } from "./dictionary/DicFuncSwitch"; import { dicHeroSkill, loadHeroSkill } from "./dictionary/DicHeroSkill"; import { dicJob, jobClassAndgrades, jobClassMaxGrades, loadJob } from "./dictionary/DicJob"; import { dicKingExp, maxPlayerLv, loadKingExp } from "./dictionary/DicKingExp"; import { dicCharExp, loadCharExp } from "./dictionary/DicCharExp"; import { dicQuestion, loadQuestion } from "./dictionary/DicQuestion"; import { dicSe, loadSe } from "./dictionary/DicSe"; import { dicTower, loadTower } from "./dictionary/DicTower"; import { dicTowerTask, loadTowerTask } from "./dictionary/DicTowerTask"; import { dicWar, dicWarPvp, dicDailyWarByType, loadWar } from "./dictionary/DicWar"; import { dicWarJson, loadWarJson } from "./dictionary/DicWarJson"; import { dicXunbao, loadXunbao } from "./dictionary/DicXunbao"; import { SPECIAL_ATTR, COM_BTL_LV_RANGE } from "../consts"; import { dicFashions, loadFashions } from "./dictionary/DicFashions"; import { friendShips, friendShipHidAandIds, loadFriendShip } from "./dictionary/DicFriendShip"; import { maxFriendShipLv, dicFriendShipLevelMap, loadFriendShipLevel } from "./dictionary/DicFriendShipLevel"; import { dicHeroQualityUp, loadHeroQualityUp } from "./dictionary/DicHeroQualityUp"; import { dicHeroStar, loadHeroStar } from "./dictionary/DicHeroStar"; import { dicHeroWake, loadHeroWake } from "./dictionary/DicHeroWake"; import { dicRandomEffectPool, loadRandomEffectPool } from './dictionary/DicRandomEffectPool'; import { dicStrengthenCost, loadStrengthenCost } from './dictionary/DicStrengthenCost'; import { dicRefine, loadRefine } from './dictionary/DicRefine'; import { dicHeroEquip, loadHeroEquip } from './dictionary/DicHeroEquip'; import { dicSuit, dicSuitByTypeAndLv, loadSuit } from './dictionary/DicSuit'; import { dicTitle, loadTitle } from './dictionary/DicTitle'; import { dicTeraph, loadTeraph } from './dictionary/DicTeraph'; import { dicSchool, loadSchool } from './dictionary/DicSchool'; import { dicSchoolRate, loadSchoolRate } from './dictionary/DicSchoolRate'; import { dicHeroScroll, preHeroScroll, loadHeroScroll } from './dictionary/DicHeroScroll'; import { dicPvpOpponent, loadPvpOpponent } from './dictionary/DicPvpOpponent'; import { dicPvpTeamLevel, loadPvpTeamLevel } from './dictionary/DicPvpTeamLevel'; import { dicPvpRefreshConsume, maxPvpRefreshCnt, loadPvpRefreshConsume } from './dictionary/DicPvpRefreshConsume'; import { dicGkPvp, dicGkPvps, loadGkPvp } from './dictionary/DicGkPvp'; import { dicHeroRewads, loadPvpHeroReward } from './dictionary/DicPvpHeroReward'; import { dicRankRewads, dicRankMax, loadPvpRankReward } from './dictionary/DicPvpRankReward'; import { dicPvpBoxs, loadPvpBox } from './dictionary/DicPvpBox'; import { dicGuildAuth, loadGuildAuth } from './dictionary/DicGuildAuth'; import { dicCenterBase, dicEquipPriduceBase, dicBossBase, dicTrainBase, dicDonateBase, dicWishPoolBase, dicStoreBase, dicStructureConsume, dicBossBaseByBossLv, loadStructure } from "./dictionary/DicStructure"; import { dicGuildActiveDayReward, loadGuildActiveDayReward } from './dictionary/DicGuildActiveDayReward'; import { dicGuildActiveWeekReward, loadGuildActiveWeekReward } from './dictionary/DicGuildActiveWeekReward'; import { dicGuildActiveWays, loadGuildActiveWays } from './dictionary/DicGuildActiveWays'; import { dicGuildPosition, loadGuildPosition } from "./dictionary/DicGuildPosition"; import { dicMail, loadMail } from "./dictionary/DicMail"; import { dicArmyTrainJuDian, loadArmyTrainJuDian } from './dictionary/DicArmyTrainJuDian'; import { dicTrainSoloReward, loadTrainSoloReward } from './dictionary/DicTrainSoloReward'; import { RewardInter } from "./interface"; import { dicArmyDevelopConsume, loadArmyDevelopConsume } from './dictionary/DicArmyDevelopConsume'; import { dicArmyBossRank, loadArmyBossRank } from './dictionary/DicArmyBossRank'; import { dicArmyDonate, loadArmyDonate } from './dictionary/DicArmyDonateBoxReward'; import { dicRoleFriend, DicRoleFriend, loadRoleFriend } from "./dictionary/DicRoleFriend"; import { dicRoleFriendLv, loadRoleFriendLv } from "./dictionary/DicRoleFriendLv"; import { AttributeCal } from "../domain/roleField/attribute"; import { dicGuildActivity, DicGuildActivity, loadGuildActivity } from './dictionary/DicGuildActivity'; import { dicGateActivityPoint, loadGateActivityPoint } from './dictionary/DicGateActivityPoint'; import { dicGuildAuction, loadGuildAuction } from './dictionary/DicGuildAuction'; import { getCurDay } from "./timeUtil"; import { dicCityActivity, loadCityActivity } from "./dictionary/DicCityActivity"; import { dicChatAccuse, loadChatAccuse } from "./dictionary/DicChatAccuse"; import { dicCityActivityReward, loadCityActivityReward } from "./dictionary/DicCityActivityReward"; import { dicRaceActivity, dicRaceTypes, loadRaceActivity } from './dictionary/DicRaceActivity'; import { GUILDACTIVITY, RECRUIT } from "./dicParam"; import * as param from "./dicParam"; import { decodeIdCntArrayStr, parseGoodStr, decodeArrayListStr, getRandValueByMinMax, getRandEelm, readTsFile } from "./util"; import { RACE_EVENT_TYPE } from "../consts"; import { dicShop, dicShopItem, loadShop } from "./dictionary/DicShop"; import { dicShopList, loadShopList } from "./dictionary/DicShopList"; import { dicRank, loadRank } from "./dictionary/DicRank"; import { dicRankReward, loadRankReward } from "./dictionary/DicRankReward"; import { dicTaskType, taskMap, dicMainTask, dicDailyTask, dicAchievement, loadTask } from "./dictionary/DicTask"; import { dicMainTaskStage, loadMainTaskStage } from "./dictionary/DicMainTaskStage"; import { dicTaskBox, loadTaskBox } from './dictionary/DicTaskBox'; import { dicGacha, loadGacha } from "./dictionary/DicGacha"; import { dicGachaContent, dicGachaContentHero, loadGachaContent } from "./dictionary/DicGachaContent"; import { dicGiftPackage, loadGiftPackage } from "./dictionary/DicGiftPackage"; import { dicRecruit, loadRecruit } from './dictionary/DicRecruit'; import { loadRMB, dicRMB } from './dictionary/DicRMB'; import { dicActivityType, loadActivityType } from './dictionary/DicActivityType'; import { dicTaskTypeDesc, loadTaskType } from './dictionary/DicTaskType'; import { dicServerName, dicServerGroupName, loadServerName } from "./dictionary/DicServerName"; import { dicAp, loadAp, dicApMaxLevel } from './dictionary/DicAp'; import { dicApBuy, dicApMaxBuyTimes, loadApBuy } from "./dictionary/DicApBuy"; import { dicTaskExp, loadTskExp} from './dictionary/DicTaskExp'; import { dicQuenchByQuality, dicQuenchRangeByQuality, dicQuenchRangeByQualityAndGrade, loadQuenchQuality } from './dictionary/DicQuenchQuality'; import { dicQuenchConsume, loadQuenchConsume } from './dictionary/DicQuenchConsume'; export const gameData = { blurprtCompose: dicBlueprtCompose, blueprtPossibility: dicBlueprtPossibility, daily: dicDaily, event: dicEvent, eventList: dicEventList, expedition: dicExpedition, expeditionPoint: dicExpeditionPoint, funcsSwitch: dicFuncSwitch, goods: dicGoods, hero: dicHero, heroQualityUp: dicHeroQualityUp, heroSkill: dicHeroSkill, heroStar: dicHeroStar, heroWake: dicHeroWake, job: dicJob, jobClassMaxGrades: jobClassMaxGrades, jobClassAndgrades: jobClassAndgrades, kingexp: dicKingExp, maxPlayerLv: maxPlayerLv, charexp: dicCharExp, question: dicQuestion, se: dicSe, tower: dicTower, towerTask: dicTowerTask, war: dicWar, warJson: dicWarJson, dailyWarByType: dicDailyWarByType, xunbao: dicXunbao, btlBossHpSum: new Map(), btlBossHp: new Map>(), blueprtToWar: new Map(), blueprt: blueprt, fashion: dicFashions, friendShips: friendShips, friendShipHidAandIds: friendShipHidAandIds, maxFriendShipLv: maxFriendShipLv, friendShipLevelMap: dicFriendShipLevelMap, randomEffectPool: dicRandomEffectPool, strengthenCost: dicStrengthenCost, refine: dicRefine, jewels: dicJewel, dicHeroEquip: dicHeroEquip, suit: dicSuit, suitByTypeAndLv: dicSuitByTypeAndLv, title: dicTitle, teraphs: dicTeraph, school: dicSchool, schoolRate: dicSchoolRate, heroScroll: dicHeroScroll, preHeroScroll: preHeroScroll, pvpOpponent: dicPvpOpponent, pvpTeamLevel: dicPvpTeamLevel, pvpWar: dicWarPvp, pvpRefreshConsume: dicPvpRefreshConsume, maxPvpRefreshCnt: maxPvpRefreshCnt, pvpGk: dicGkPvp, pvpGks: dicGkPvps, pvpHeroRewards: dicHeroRewads, pvpRankRewards: dicRankRewads, pvpBoxs: dicPvpBoxs, pvpRankMax: dicRankMax, guildAuth: dicGuildAuth, centerBase: dicCenterBase, equipProduceBase: dicEquipPriduceBase, bossBase: dicBossBase, bossBaseByBossLv: dicBossBaseByBossLv, trainBase: dicTrainBase, donateBase: dicDonateBase, armyWishPool: dicWishPoolBase, storeBase: dicStoreBase, structureConsume: dicStructureConsume, guildActiveDayReward: dicGuildActiveDayReward, guildActiveWeekReward: dicGuildActiveWeekReward, guildPosition: dicGuildPosition, armyTrainJuDian: dicArmyTrainJuDian, trainSoloReward: dicTrainSoloReward, mail: dicMail, guildActiveWays: dicGuildActiveWays, armyDevelopConsume: dicArmyDevelopConsume, armyBossRank: dicArmyBossRank, armyDonateBox: dicArmyDonate, roleFriend: dicRoleFriend, roleFriendLv: dicRoleFriendLv, figureCondition: figureCondition, guildActivity: dicGuildActivity, gateActivityPoint: dicGateActivityPoint, guildAuction: dicGuildAuction, cityActivity: dicCityActivity, chatAccuse: dicChatAccuse, cityActivityReward: dicCityActivityReward, raceActivityEvents: dicRaceActivity, raceTypes: dicRaceTypes, raceActivityEncounter: { events: new Map(), eventNum: 0 }, raceNormalItems: new Array<{id: number, min: number, max: number}>(), raceEventItems: new Array<{id: number, count: number}>(), shop: dicShop, shopItem: dicShopItem, shopList: dicShopList, dicMyHeroes: dicMyHeroes, rank: dicRank, generalRankReward: dicRankReward, taskType: dicTaskType, tasks: taskMap, mainTask: dicMainTask, dailyTask: dicDailyTask, achievement: dicAchievement, mainTaskStage: dicMainTaskStage, taskBox: dicTaskBox, gacha: dicGacha, gachaContent: dicGachaContent, gachaContentHero: dicGachaContentHero, gachaHope: new Array<{id: number, weight: number}>(), gachaTurntable: new Array<{quality: number, count: number}>(), heroTransPiece: new Map(), giftPackage: dicGiftPackage, comBtlLvRange: new Map>(), recruit: dicRecruit, rmb: dicRMB, activityType: dicActivityType, taskTypeDesc: dicTaskTypeDesc, serverNames: dicServerName, serverGroupNames: dicServerGroupName, ap: dicAp, apMaxLevel: dicApMaxLevel, apBuy: dicApBuy, apMaxBuyTimes: dicApMaxBuyTimes, taskExp: dicTaskExp, quenchRangeByQuality: dicQuenchRangeByQuality, quenchRangeByQualityAndGrade: dicQuenchRangeByQualityAndGrade, quenchConsume: dicQuenchConsume, quenchByQuality: dicQuenchByQuality, equipAttributeRatio: new Map() }; // 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据 /** * 根据主公当前经验获得当前等级 * @param exp 累积经验 */ export function getLvByExp(exp: number) { let curLv = 0; let entries = gameData.kingexp.entries(); for (let [lv, { sum }] of entries) { curLv = lv; if (exp < sum) break; } return curLv; } /** * 根据主公当前等级,获得累积经验,1=> 1级满经验 * @param lv 等级 */ export function getExpByLv(lv: number) { return gameData.kingexp.get(lv); } /** * 根据武将当前经验获得当前等级 * @param exp 累积经验 */ export function getHeroLvByExp(exp: number) { let curLv = 0; let entries = gameData.charexp.entries(); for (let [lv, sum] of entries) { curLv = lv; if (exp < sum) break; } return curLv; } /** * 根据武将当前等级,获得累积经验,1=> 1级满经验 * @param lv */ export function getHeroExpByLv(lv: number) { return gameData.charexp.get(lv); } /** * 根据武将当前好感获得好感等级 * @param exp 累积经验 */ export function getFavourLvByExp(exp: number) { let curLv = 0; let entries = gameData.friendShipLevelMap.entries(); for (let [lv, { expSum: sum }] of entries) { curLv = lv; if (exp < sum) break; } return curLv; } export function getBossHpByWarId(warId: number) { let bossHpSum = gameData.btlBossHpSum.get(warId) || 0; let bossHpArr = gameData.btlBossHp.get(warId) || []; if (!bossHpSum || !bossHpArr) { const warInfo = dicWarJson.get(warId); if (warInfo && warInfo.length) { warInfo.forEach(hero => { let { attribute, dataId, relation, actorId } = hero; if (relation === 2) { let newAttr = new AttributeCal(); newAttr.setByWarJson(attribute, 1); let attrJson = newAttr.getReduceAttributes(); const hp = attrJson.hp || 0; if (hp > 0) { bossHpArr.push({ dataId, hp, actorId }); bossHpSum += hp; } } }) gameData.btlBossHp.set(warId, bossHpArr); gameData.btlBossHpSum.set(warId, bossHpSum); } } return { bossHpSum, bossHpArr }; } export function getWarIdByBlueprtId(blueprtId: number) { let warId = gameData.blueprtToWar.get(blueprtId); if (!warId) { let blueprt = gameData.goods.get(blueprtId); if (blueprt) { const { specialAttr } = blueprt; warId = specialAttr.get(SPECIAL_ATTR.WAR_ID); if (warId) gameData.blueprtToWar.set(blueprtId, warId); } } return warId; } export function getBossHpByBlueprtId(blueprtId: number) { let { dispatchJsonId } = getWarByBlueprtId(blueprtId); let bossHpInfo = getBossHpByWarId(dispatchJsonId); return bossHpInfo; } export function getWarByBlueprtId(blueprtId: number) { let warId = getWarIdByBlueprtId(blueprtId); return gameData.war.get(warId); } export function getRewardByBlueprtId(blueprtId: number) { let { fixReward } = getWarByBlueprtId(blueprtId); return fixReward; } function parseComBtlLvRange() { let map = new Map>() const lvRange = COM_BTL_LV_RANGE; lvRange.forEach(range => { const lvs = []; for (let lv = range.minLv; lv <= range.maxLv; lv++) { lvs.push(lv); } map.set(range.id, lvs); }); gameData.comBtlLvRange = map } export function comBtlRangeByLv(lv: number) { for (let [k, v] of gameData.comBtlLvRange) { if (v.indexOf(lv) !== -1) { return k; } } } export function comBtlRanges() { return Array.from(gameData.comBtlLvRange.keys()); } export function getHeroStarByQuality(classType: number, quality: number, star: number) { return gameData.heroStar.get(`${classType}_${quality}_${star}`); } export function getHeroWakeByQuality(classType: number, quality: number, star: number) { return gameData.heroWake.get(`${classType}_${quality}_${star}`); } export function getMaxGradeByjobClass(jobClass: number) { const job = gameData.jobClassMaxGrades.get(jobClass); return job?.jobid; } export function getJobByGradeAndClass(jobClass: number, grade: number) { return gameData.jobClassAndgrades.get(jobClass + '_' + grade); } export function getFriendShipById(shipId: number, level: number) { return gameData.friendShips.get(shipId + '_' + level); } export function getGoodById(gid: number) { return gameData.goods.get(gid); } export function getJewelById(gid: number) { return gameData.jewels.get(gid); } export function getHeroEquipByClassId(classId: number) { return gameData.dicHeroEquip.get(classId); } export function getHeroJob(jobId: number) { const job = gameData.job.get(jobId); return job; } export function getTitle(titleLv: number) { const titleInfo = gameData.title.get(titleLv); return titleInfo; } export function getTeraph(id: number, grade: number) { const teraphInfo = gameData.teraphs.get(id + '_' + grade); return teraphInfo; } export function getSchoolRateByStar(star: number, colorStar: number, quality: number) { const schoolRate = gameData.schoolRate.get(`${star}_${colorStar}_${quality}`); return schoolRate; } export function getScollByStar(quality: number, star: number, curQuality: number, colorStar: number) { const heroScroll = gameData.heroScroll.get(`${quality}_${star}_${curQuality}_${colorStar}`); return heroScroll; } export function getSuit(id: number) { const suitInfo = gameData.suit.get(id); return suitInfo; } export function getFuncsSwitch(id: number) { const funcInfo = gameData.funcsSwitch.get(id); return funcInfo; } export function getPLvByScore(score: number) { let lv = 0; for (let { teamLv, topLineupMin, topLineupMax } of gameData.pvpTeamLevel) { if (score >= topLineupMin) lv = teamLv; if (score < topLineupMax) break; } return lv; } export function getPvpGkByWarId(warId: number) { return gameData.pvpGk.get(warId); } export function getPvpGkWarIds() { let warIds = gameData.pvpGks; return warIds; } export function getPvpHeroRewards() { return gameData.pvpHeroRewards; } export function getPvpRankRewards() { return gameData.pvpRankRewards; } export function getPvpBoxs() { return gameData.pvpBoxs; } export function getResultMaxRank() { return gameData.pvpRankMax.max; } export function getStructureConsume(structureId: number, level: number) { return gameData.structureConsume.get(structureId).get(level); } export function hasStructureConsume(structureId: number, level: number) { return gameData.structureConsume.get(structureId).has(level); } export function getBossByLv(lv: number) { return gameData.bossBase.get(lv); } export function getArmyTrainJuDian(trainId: number) { return gameData.armyTrainJuDian.get(trainId); } export function getTrainSoloReward(id: number) { return gameData.trainSoloReward.get(id); } export function getTrainBaseByLv(lv: number) { return gameData.trainBase.get(lv); } export function getGuildActiveWeekReward(rank: number) { let result = gameData.guildActiveWeekReward.find(cur => { let { rankMax, rankMin } = cur; return rank >= rankMin && rank <= (rankMax || rankMax == -1); }); let reward = new Array(); if (result) reward = result.reward; return reward; } export function getGuildActiveByIdAndType(id: number, type: number) { let dicWay = gameData.guildActiveWays.get(id); if (!dicWay) return 0; return dicWay.activePoint.get(type.toString()); } export function getArmyDevelopConsumeById(id: number) { let result = gameData.armyDevelopConsume.get(id); return result; } export function getArmyDevelopConsume() { return gameData.armyDevelopConsume; } export function getArmyBossRank() { return gameData.armyBossRank; } export function getArmyDonateBaseByLv(lv: number) { return gameData.donateBase.get(lv); } export function getArmyDonateBoxBaseById(id: number) { return gameData.armyDonateBox.get(id); } export function getArmyWishPoolBaseByLv(lv: number) { return gameData.armyWishPool.get(lv); } export function getFriendLvByExp(exp: number) { let resultLv = 1; for (let [lv, { sum }] of gameData.roleFriendLv.entries()) { resultLv = lv; if (exp < sum) break; } return resultLv; } /** * 根据主公当前经验获得当前等级 * @param exp 累积经验 */ export function getDicFriendByLv(lv: number) { let dicFriend: DicRoleFriend; let entries = gameData.roleFriend.entries(); for (let [dicLv, dic] of entries) { dicFriend = dic; if (lv > dicLv) break; } return dicFriend; } /** * @description 获取今天开启的活动的配置 */ export function getTodayGuildActivity() { let today = getCurDay(); let dic: DicGuildActivity; for (let [_id, dicGuildActivity] of gameData.guildActivity) { if (dicGuildActivity.openDay.includes(today)) { dic = dicGuildActivity; break; } } return dic; } /** * 根据军团活动排名获得奖励 * @param aid 活动id * @param rank 排名 */ export function getGuildAuctionRewards(aid: number, rank: number) { let ranksReward = gameData.guildAuction.get(aid) || []; let dic = ranksReward.find(cur => { return rank >= cur.min && (rank <= cur.max || cur.max == 0); }); return dic ? dic.rewards : new Array(); } /** * 根据军团活动排名获得功勋奖励 * @param type 城池类型 * @param guildRank 军团排名 * @param rank 成员在军团内部排名 */ export function getCityActivityRewards(type: number, guildRank: number, rank: number) { let ranksReward = gameData.cityActivityReward.get(type) || []; let dic = ranksReward.find(cur => { return cur.guildRank == guildRank && (rank >= cur.min && (rank <= cur.max || cur.max == 0)); }); return dic ? dic.honour : 0; } function decodeRaceActivityEncounter() { let str = GUILDACTIVITY.RACEACTIVITY_ENCOUNTER; let map = decodeIdCntArrayStr(str, 1); let newMap = new Map(); let eventNum = 0; for (let [key, value] of map) { if (value == RACE_EVENT_TYPE.EVENT) eventNum++; newMap.set(parseInt(key), value); } gameData.raceActivityEncounter = { events: newMap, eventNum }; } function decodeRaceNormalItems() { let str = GUILDACTIVITY.RACEACTIVITY_NORMAL_ITEMS; let result = new Array<{ id: number, min: number, max: number }>(); if (!str) return result; let decodeArr = decodeArrayListStr(str); for (let [id, min, max] of decodeArr) { if (isNaN(parseInt(id)) || isNaN(parseInt(min)) || isNaN(parseInt(max))) { throw new Error('data table format wrong'); } result.push({ id: parseInt(id), min: parseInt(min), max: parseInt(max) }); } gameData.raceNormalItems = result; } function decodeRaceEventItems() { let str = GUILDACTIVITY.RACEACTIVITY_EVENT_ITEMS || ""; gameData.raceEventItems = parseGoodStr(str); } export function getRaceEventItems() { let items = gameData.raceNormalItems; let result = new Array(); for (let { id, min, max } of items) { let count = getRandValueByMinMax(min, max, 0); result.push({ id, count }); } return result; } // 根据保底类型获得保底数量 export function getDicGachaFloor(id: number) { let map = decodeIdCntArrayStr(RECRUIT.RECRUIT_MUST, 1); return map.get(id.toString()) } export function getRandExpedition(cnt = 1) { let arr: DicExpedition[] = []; for (let [_id, dicExpedition] of gameData.expedition) { arr.push(dicExpedition); } return getRandEelm(arr, cnt); } // 抽卡心愿单概率 function getGachaHopePercent() { let arr = decodeArrayListStr(RECRUIT.RECRUIT_WISH_LIST); gameData.gachaHope = arr.map(cur => { return { id: parseInt(cur[0]), weight: parseInt(cur[1]) } }); } // 抽卡转盘概率 function getGachaTurntablePercent() { let arr = decodeArrayListStr(RECRUIT.RECRUIT_BONUS_HERO_QUANTITY); gameData.gachaTurntable = arr.map(cur => { return { quality: parseInt(cur[0]), count: parseInt(cur[1]) } }); } function getHeroTransPiece() { let map = decodeIdCntArrayStr(RECRUIT.RECRUIT_CHANGE_SHARD, 1); let newMap = new Map(); for (let [id, count] of map) { newMap.set(parseInt(id), count); } gameData.heroTransPiece = newMap } // 根据groupId获得当前大区名 export function getServerGroupName(groupId: number) { let name = gameData.serverGroupNames.get(groupId); if(!name) { let maxId = 0; gameData.serverGroupNames.forEach((gname, id) => { if(id > maxId) { maxId = id; name = gname; } }) } return name; } // 根据服务器id获得当前大区名 export function getServerName(id: number) { let name = gameData.serverNames.get(id); if(!name) { let maxId = 0; gameData.serverNames.forEach((sname, id) => { if(id > maxId) { maxId = id; name = sname; } }) } return name; } export function getDicApByLv(level: number) { if(level > gameData.apMaxLevel.max) { return gameData.ap.get(gameData.apMaxLevel.max); } else { return gameData.ap.get(level); } } export function getDicSuitByTypeAndLv(suitType: number, starLevel: number) { return gameData.suitByTypeAndLv.get(`${suitType}_${starLevel}`); } export function getQuenchGradeByValue(quality: number, value: number) { let dicQuench = gameData.quenchByQuality.get(quality)||[]; let grade = 0; for(let [_grade, { singleRatioMin, singleRatioMax }] of dicQuench) { if((value >= singleRatioMin && value < singleRatioMax) || (value == singleRatioMin && value == singleRatioMax) ) { grade = _grade; } } return grade; } /** * 根绝品质和品相获得上下限,当grade为0,获取该品质下全阶的上下限 * @param quality 品质 * @param grade 品相 * @returns {{ min: number, max: number }} */ export function getQuenchByQualityAndGrade(quality: number, grade: number) { if(grade == 0) { // 这个品质的上下限 return gameData.quenchRangeByQuality.get(quality); } else { // 该品质该品相的上下限 return gameData.quenchRangeByQualityAndGrade.get(`${quality}_${grade}`); } } export function getQuenchConsume(lvLimited: number, quality: number) { return gameData.quenchConsume.get(`${lvLimited}_${quality}`); } function loadEquipAttributeRatio() { let arr = decodeArrayListStr(param.ATTRIBUTE.ATTRIBUTE_EQUIP_RATIO); for(let [id, ratio] of arr) { gameData.equipAttributeRatio.set(parseInt(id), parseInt(ratio)); } } // 初始加载 function initDatas() { parseDicParam(); loadDatas(); } // 解析一部分dicParam的数据 function parseDicParam() { decodeRaceActivityEncounter(); decodeRaceNormalItems(); decodeRaceEventItems(); getGachaHopePercent(); getGachaTurntablePercent(); getHeroTransPiece(); parseComBtlLvRange(); } // 加载json function loadDatas() { loadHero(); loadGoods(); loadBlueprtCompose(); loadBlueprtPossibility(); loadDaily(); loadEvent(); loadExpedition(); loadExpeditionPoint(); loadFuncSwitch(); loadHeroSkill(); loadJob(); loadKingExp(); loadCharExp(); loadQuestion(); loadSe(); loadTower(); loadTowerTask(); loadWar(); loadWarJson(); loadXunbao(); loadFashions(); loadFriendShip(); loadFriendShipLevel(); loadHeroQualityUp(); loadHeroStar(); loadHeroWake(); loadRandomEffectPool(); loadStrengthenCost(); loadRefine(); loadHeroEquip(); loadSuit(); loadTitle(); loadTeraph(); loadSchool(); loadSchoolRate(); loadHeroScroll(); loadPvpOpponent(); loadPvpTeamLevel(); loadPvpRefreshConsume(); loadGkPvp(); loadPvpHeroReward(); loadPvpRankReward(); loadPvpBox(); loadGuildAuth(); loadStructure(); loadGuildActiveDayReward(); loadGuildActiveWeekReward(); loadGuildActiveWays(); loadGuildPosition(); loadMail(); loadArmyTrainJuDian(); loadTrainSoloReward(); loadArmyDevelopConsume(); loadArmyBossRank(); loadArmyDonate(); loadRoleFriend(); loadRoleFriendLv(); loadGuildActivity(); loadGateActivityPoint(); loadGuildAuction(); loadCityActivity(); loadChatAccuse(); loadCityActivityReward(); loadRaceActivity(); loadShop(); loadShopList(); loadRank(); loadRankReward(); loadTask(); loadMainTaskStage(); loadTaskBox(); loadGacha(); loadGachaContent(); loadGiftPackage(); loadRecruit(); loadRMB(); loadActivityType(); loadTaskType(); loadServerName(); loadAp(); loadApBuy(); loadTskExp(); loadQuenchQuality(); loadQuenchConsume(); loadEquipAttributeRatio(); } // 重载dicParam export function reloadDicParam() { let file = readTsFile('dicParam'); if(file) { let lines = file.split('\n'); let outer = ''; lines.forEach(line => { if(line.replace(/ /g, '')) { if(line.indexOf('export') != -1) { outer = line.split(' ')[2]; // console.log(outer) } if(line.indexOf('export') == -1 && line.indexOf('}') == -1) { let s = line.split(', //')[0].split(':'); let key = s[0].replace(/ /g, ''); let value = s[1].replace(/ /g, ''); let isString = value.match(/(?<=')[^']*/); if(isString) { param[outer][key] = isString[0]; } else { param[outer][key] = parseFloat(value); } } } }); parseDicParam(); } } // 后台调用重载资源 export function reloadResources() { loadDatas(); reloadDicParam(); } initDatas();