diff --git a/shared/consts/constModules/sysConst.ts b/shared/consts/constModules/sysConst.ts index e62d2f72d..84d94a92d 100644 --- a/shared/consts/constModules/sysConst.ts +++ b/shared/consts/constModules/sysConst.ts @@ -575,6 +575,9 @@ export const FILENAME = { DIC_GVG_AREA: 'dic_zyz_GVGArea', DIC_GVG_CITY_ADD: 'dic_zyz_GVGCityAdd', DIC_GVG_TASK: 'dic_zyz_GVGTask', + DIC_GVG_VESTIGE_TYPE: 'dic_zyz_GVGVestigeType', + DIC_GVG_VESTIGE: 'dic_zyz_GVGVestige', + DIC_GVG_VESTIGE_LEAGUE_RANK: 'dic_zyz_GVGVestigeLeagueRank', } export const WAR_RELATE_TABLES = [ diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index c57ab39ae..db21c1b5d 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -127,6 +127,8 @@ import { dicGVGContributeBox, loadGVGContributeBox } from './dictionary/DicGVGCo import { dicGVGArea, dicGVGCity, loadGVGArea } from './dictionary/DicGVGArea'; import { dicGVGCityAdd, loadGVGCityAdd } from './dictionary/DicGVGCityAdd'; import { dicGVGTask, dicGVGTaskByType, loadGVGTask } from './dictionary/DicGVGTask'; +import { dicGVGVestigeByType, loadGVGVestigeType } from './dictionary/DicGVGVestigeType'; +import { dicGVGVestige, loadGVGVestige } from './dictionary/DicGVGVestige'; export const gameData = { daily: dicDaily, @@ -320,6 +322,9 @@ export const gameData = { gvgCityAdd: dicGVGCityAdd, gvgTask: dicGVGTask, gvgTaskByType: dicGVGTaskByType, + gvgVestigeByServerType: dicGVGVestigeByType, + gvgVestigeCntByServerType: new Map(), // 单服or跨服 => 遗迹数量 + gvgVestige: dicGVGVestige, }; // 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据 @@ -1153,11 +1158,17 @@ export function getGVGTasksByType(taskType: number) { let taskIds = gameData.gvgTaskByType.get(taskType)||[]; return taskIds.map(taskId => { let dic = gameData.gvgTask.get(taskId); - console.log(taskId, dic) return dic }); } +function parseGVGVestigeCnt() { + let arr = decodeArrayListStr(param.GVG.GVG_SERVICETYPE_VESTIGE); + for(let [type, cnt] of arr) { + gameData.gvgVestigeCntByServerType.set(parseInt(type), parseInt(cnt)); + } +} + // 初始加载 function initDatas() { parseDicParam(); @@ -1181,6 +1192,7 @@ function parseDicParam() { parseGVGActive(); parseGVGFieldAdd(); parseGVGSpFieldRatio(); + parseGVGVestigeCnt(); } /** @@ -1365,6 +1377,8 @@ function loadDatas() { loadGVGArea(); loadGVGCityAdd(); loadGVGTask(); + loadGVGVestigeType(); + loadGVGVestige(); } // 重载dicParam diff --git a/shared/pubUtils/dictionary/DicGVGArea.ts b/shared/pubUtils/dictionary/DicGVGArea.ts index 39ed5fd69..138c062de 100644 --- a/shared/pubUtils/dictionary/DicGVGArea.ts +++ b/shared/pubUtils/dictionary/DicGVGArea.ts @@ -4,21 +4,21 @@ import { parseNumberList, readFileAndParse } from '../util' export interface DicGVGArea { // 区域id - areaId: number; + readonly areaId: number; // 大地图id - mapId: string + readonly mapId: string // 大地图类型 1-单服 2-跨服 - mapType: number; + readonly mapType: number; // 城池id - cityId: number; + readonly cityId: number; // 城池类型 - cityType: number; + readonly cityType: number; // 区域类型 1-守方备战区 2-攻方备战区 3-大据点区 4-中据点区 5-小据点区 6-投石车区 - areaType: number; + readonly areaType: number; // 区域管理 - relateArea: number[]; + readonly relateArea: number[]; // 0表不能被投石车选中作为攻击区域,1表能 - catapultAttack: number; + readonly catapultAttack: number; } export const dicGVGArea = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGCityAdd.ts b/shared/pubUtils/dictionary/DicGVGCityAdd.ts index 149d00956..0bb785573 100644 --- a/shared/pubUtils/dictionary/DicGVGCityAdd.ts +++ b/shared/pubUtils/dictionary/DicGVGCityAdd.ts @@ -4,13 +4,13 @@ import { readFileAndParse } from '../util' export interface DicGVGCityAdd { // 城池类型 1-大城 2-中城 3-小城 - cityType: number; + readonly cityType: number; // 粮食加成 - foodAdd: number; + readonly foodAdd: number; // 矿物加成 - mineralAdd: number; + readonly mineralAdd: number; // 木头加成 - woodAdd: number; + readonly woodAdd: number; } export const dicGVGCityAdd = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGContributeBox.ts b/shared/pubUtils/dictionary/DicGVGContributeBox.ts index 084802db4..399f0805f 100644 --- a/shared/pubUtils/dictionary/DicGVGContributeBox.ts +++ b/shared/pubUtils/dictionary/DicGVGContributeBox.ts @@ -5,15 +5,15 @@ import { parseGoodStr, readFileAndParse } from '../util' export interface DicGVGContributeBox { // 唯一id - id: number; + readonly id: number; // 职能 1-贤臣 2-猛将 - job: number; + readonly job: number; // 所需积分点 - boxPoint: number; + readonly boxPoint: number; // 奖励,普通背包物品 - boxReward: RewardInter[]; + readonly boxReward: RewardInter[]; // 奖励,联军相关道具物品 - boxLeagueReward: RewardInter[]; + readonly boxLeagueReward: RewardInter[]; } export const dicGVGContributeBox = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGItems.ts b/shared/pubUtils/dictionary/DicGVGItems.ts index 8631479ef..75fcc1d37 100644 --- a/shared/pubUtils/dictionary/DicGVGItems.ts +++ b/shared/pubUtils/dictionary/DicGVGItems.ts @@ -5,25 +5,25 @@ import { parseGoodStr, readFileAndParse } from '../util' export interface DicGVGItem { // 道具id - id: number; + readonly id: number; // 点名称 - name: string + readonly name: string // 1-种子 2-铲子 3-斧子 4-内政外政令 5-战功 6-激战期用的复活令&匕首 - type: number; + readonly type: number; // 1-每日刷新 2-赛期内刷新 - refreshType: number; + readonly refreshType: number; // 兑换物品表消耗 - consume: RewardInter[]; + readonly consume: RewardInter[]; // 这个表里的兑换消耗 - leagueConsume: RewardInter[]; + readonly leagueConsume: RewardInter[]; // 耐久度或者产量 - value: number, + readonly value: number, // 消耗后可获得的奖励 - reward: RewardInter[]; + readonly reward: RewardInter[]; // 消耗后可获得的这张表里的奖励 - leagueReward: RewardInter[]; + readonly leagueReward: RewardInter[]; // 成熟时间 - ripeTime: number; + readonly ripeTime: number; } export const dicGVGItem = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGLeagueLv.ts b/shared/pubUtils/dictionary/DicGVGLeagueLv.ts index 6f22ef2d8..0c70dd66a 100644 --- a/shared/pubUtils/dictionary/DicGVGLeagueLv.ts +++ b/shared/pubUtils/dictionary/DicGVGLeagueLv.ts @@ -5,15 +5,15 @@ import { parseGoodStr, readFileAndParse } from '../util' export interface DicGVGLeagueLv { // 等级 - lv: number; + readonly lv: number; // 粮食 - food: number; + readonly food: number; // 矿产 - mineral: number; + readonly mineral: number; // 木材 - wood: number; + readonly wood: number; // 消耗后可获得的奖励 - reward: RewardInter[]; + readonly reward: RewardInter[]; } export const dicGVGLeagueLv = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGResourceBase.ts b/shared/pubUtils/dictionary/DicGVGResourceBase.ts index cd4ae4828..005b8bdb7 100644 --- a/shared/pubUtils/dictionary/DicGVGResourceBase.ts +++ b/shared/pubUtils/dictionary/DicGVGResourceBase.ts @@ -5,25 +5,25 @@ const _ = require('lodash'); export interface DicGVGResourceBase { // 唯一id - id: number; + readonly id: number; // 名称 - name: string + readonly name: string // 农庄等级 - lv: number; + readonly lv: number; // 类型 1-农田 2-矿场 3-木堆 - type: number; + readonly type: number; // 限制类型 - limitType: number; + readonly limitType: number; // 限制参数 - limitParams: number[]; + readonly limitParams: number[]; // 农田产量加成 - fieldAdd: number; + readonly fieldAdd: number; // 矿山铁矿的含铁量 - mineralValue: { type: number, output: number, count: number }[]; + readonly mineralValue: { type: number, output: number, count: number }[]; // 单木框产量 - woodOutput: number; + readonly woodOutput: number; // 总数 - sum: number; + readonly sum: number; } type KeysEnum = { [P in keyof Required]: true }; diff --git a/shared/pubUtils/dictionary/DicGVGTask.ts b/shared/pubUtils/dictionary/DicGVGTask.ts index 520bab3e9..1b6ea9a30 100644 --- a/shared/pubUtils/dictionary/DicGVGTask.ts +++ b/shared/pubUtils/dictionary/DicGVGTask.ts @@ -5,19 +5,19 @@ import { parseGoodStr, parseNumberList, readFileAndParse } from '../util' export interface DicGVGTask { // 唯一id - id: number; + readonly id: number; // 任务id - taskId: number; + readonly taskId: number; // 任务类型 - taskType: number; + readonly taskType: number; // 任务参数 - taskParam: number[]; + readonly taskParam: number[]; // 条件 - condition: number; + readonly condition: number; // 普通背包奖励 - reward: RewardInter[]; + readonly reward: RewardInter[]; // 联军背包奖励 - leagueReward: RewardInter[]; + readonly leagueReward: RewardInter[]; } export const dicGVGTask = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGTech.ts b/shared/pubUtils/dictionary/DicGVGTech.ts index 152066acc..3c8a9d21f 100644 --- a/shared/pubUtils/dictionary/DicGVGTech.ts +++ b/shared/pubUtils/dictionary/DicGVGTech.ts @@ -4,23 +4,23 @@ import { decodeArrayListStr, parseNumberList, readFileAndParse } from '../util' export interface DicGVGTech { // 唯一id - id: number; + readonly id: number; // 点名称 - name: string + readonly name: string // 激活后获得的内容 - content: string; + readonly content: string; // 效果类型 1-资源产量上传 2-征战中原提升 3-激战期提升 4-复活cd减少 5-箭塔 6-攻城车 - type: number; + readonly type: number; // 资源提升量啊,复活cd减少量啊之类的值 - param: number[]; + readonly param: number[]; // 点排序 - nodeSort: number; + readonly nodeSort: number; // 联军等级限制 - levelLimit: number; + readonly levelLimit: number; // 前置id - prepositionId: number[][]; + readonly prepositionId: number[][]; // 所需的战功 - consume: number; + readonly consume: number; } export const dicGVGTech = new Map(); diff --git a/shared/pubUtils/dictionary/DicGVGVestige.ts b/shared/pubUtils/dictionary/DicGVGVestige.ts new file mode 100644 index 000000000..888d1e451 --- /dev/null +++ b/shared/pubUtils/dictionary/DicGVGVestige.ts @@ -0,0 +1,51 @@ +// GVG遗迹 +import { FILENAME } from '../../consts' +import { RewardInter } from '../interface'; +import { parseGoodStr, readFileAndParse } from '../util' + +export interface DicGVGVestige { + // 唯一id + readonly id: number; + // 遗迹id + readonly vestigeId: number; + // 排行 + readonly rank: number; + // 驻扎分 + readonly score: number; + // 机器人的名字 + readonly name: string; + // 显示在上面的形象 + readonly spine: number; + // 显示在详情的头像 + readonly head: number; + // 显示战力 + readonly ce: number; + // 突破奖励 + readonly onceReward: RewardInter[]; + // 突破时得到的gvg相关的奖励 + readonly onceLeagueReward: RewardInter[]; + // 机器人的出兵表使用 + readonly warId: number; + // 消耗征战令得到的奖励 + readonly battleReward: RewardInter[]; + // 消耗征战令得到的gvg相关的奖励 + readonly battleLeagueReward: RewardInter[]; +} + +export const dicGVGVestige = new Map>(); // 遗迹id => 排行 => dic +export function loadGVGVestige() { + dicGVGVestige.clear(); + + let arr = readFileAndParse(FILENAME.DIC_GVG_VESTIGE); + arr.forEach(o => { + o.onceReward = parseGoodStr(o.onceReward); + o.onceLeagueReward = parseGoodStr(o.onceLeagueReward); + o.battleReward = parseGoodStr(o.battleReward); + o.battleLeagueReward = parseGoodStr(o.battleLeagueReward); + if(!dicGVGVestige.has(o.vestigeId)) { + dicGVGVestige.set(o.vestigeId, new Map()); + } + dicGVGVestige.get(o.vestigeId)?.set(o.rank, o); + }); + arr = undefined; +} \ No newline at end of file diff --git a/shared/pubUtils/dictionary/DicGVGVestigeLeagueRank.ts b/shared/pubUtils/dictionary/DicGVGVestigeLeagueRank.ts new file mode 100644 index 000000000..b04bdad97 --- /dev/null +++ b/shared/pubUtils/dictionary/DicGVGVestigeLeagueRank.ts @@ -0,0 +1,30 @@ +// GVG遗迹 +import { FILENAME } from '../../consts' +import { RewardInter } from '../interface'; +import { parseGoodStr, readFileAndParse } from '../util' + +export interface DicGVGVestigeLeagueRank { + // id + readonly id: number; + // 最低排名 + readonly rankMin: number; + // 最高排名 + readonly rankMax: number; + // 普通奖励 + readonly rankReward: RewardInter[]; + // gvg内奖励 + readonly rankLeagueReward: RewardInter[]; +} + +export const dicGVGVestigeLeagueRank: DicGVGVestigeLeagueRank[] = []; +export function loadGVGVestigeLeagueRank() { + dicGVGVestigeLeagueRank.splice(0, dicGVGVestigeLeagueRank.length); + + let arr = readFileAndParse(FILENAME.DIC_GVG_VESTIGE_LEAGUE_RANK); + arr.forEach(o => { + o.rankReward = parseGoodStr(o.rankReward); + o.rankLeagueReward = parseGoodStr(o.rankLeagueReward); + dicGVGVestigeLeagueRank.push(o); + }); + arr = undefined; +} \ No newline at end of file diff --git a/shared/pubUtils/dictionary/DicGVGVestigeType.ts b/shared/pubUtils/dictionary/DicGVGVestigeType.ts new file mode 100644 index 000000000..82c8b7c74 --- /dev/null +++ b/shared/pubUtils/dictionary/DicGVGVestigeType.ts @@ -0,0 +1,31 @@ +// GVG遗迹 +import { FILENAME } from '../../consts' +import { parseNumberList, readFileAndParse } from '../util' + +export interface DicGVGVestigeType { + // 唯一id + readonly id: number; + // 遗迹id + readonly vestigeId: number; + // 地图类型,1-单服 2-跨服 + readonly mapType: number[]; + // 位置 + readonly position: string; +} + +export const dicGVGVestigeByType = new Map(); // 地图类型 => 遗迹id +export function loadGVGVestigeType() { + dicGVGVestigeByType.clear(); + + let arr = readFileAndParse(FILENAME.DIC_GVG_VESTIGE_TYPE); + arr.forEach(o => { + o.mapType = parseNumberList(o.mapType); + for(let type of o.mapType) { + if(!dicGVGVestigeByType.has(type)) { + dicGVGVestigeByType.set(type, []); + } + dicGVGVestigeByType.get(type)?.push(o); + } + }); + arr = undefined; +} \ No newline at end of file