✨ feat(gvg): 添加策划表解析
This commit is contained in:
@@ -575,6 +575,9 @@ export const FILENAME = {
|
|||||||
DIC_GVG_AREA: 'dic_zyz_GVGArea',
|
DIC_GVG_AREA: 'dic_zyz_GVGArea',
|
||||||
DIC_GVG_CITY_ADD: 'dic_zyz_GVGCityAdd',
|
DIC_GVG_CITY_ADD: 'dic_zyz_GVGCityAdd',
|
||||||
DIC_GVG_TASK: 'dic_zyz_GVGTask',
|
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 = [
|
export const WAR_RELATE_TABLES = [
|
||||||
|
|||||||
+15
-1
@@ -127,6 +127,8 @@ import { dicGVGContributeBox, loadGVGContributeBox } from './dictionary/DicGVGCo
|
|||||||
import { dicGVGArea, dicGVGCity, loadGVGArea } from './dictionary/DicGVGArea';
|
import { dicGVGArea, dicGVGCity, loadGVGArea } from './dictionary/DicGVGArea';
|
||||||
import { dicGVGCityAdd, loadGVGCityAdd } from './dictionary/DicGVGCityAdd';
|
import { dicGVGCityAdd, loadGVGCityAdd } from './dictionary/DicGVGCityAdd';
|
||||||
import { dicGVGTask, dicGVGTaskByType, loadGVGTask } from './dictionary/DicGVGTask';
|
import { dicGVGTask, dicGVGTaskByType, loadGVGTask } from './dictionary/DicGVGTask';
|
||||||
|
import { dicGVGVestigeByType, loadGVGVestigeType } from './dictionary/DicGVGVestigeType';
|
||||||
|
import { dicGVGVestige, loadGVGVestige } from './dictionary/DicGVGVestige';
|
||||||
|
|
||||||
export const gameData = {
|
export const gameData = {
|
||||||
daily: dicDaily,
|
daily: dicDaily,
|
||||||
@@ -320,6 +322,9 @@ export const gameData = {
|
|||||||
gvgCityAdd: dicGVGCityAdd,
|
gvgCityAdd: dicGVGCityAdd,
|
||||||
gvgTask: dicGVGTask,
|
gvgTask: dicGVGTask,
|
||||||
gvgTaskByType: dicGVGTaskByType,
|
gvgTaskByType: dicGVGTaskByType,
|
||||||
|
gvgVestigeByServerType: dicGVGVestigeByType,
|
||||||
|
gvgVestigeCntByServerType: new Map<number, number>(), // 单服or跨服 => 遗迹数量
|
||||||
|
gvgVestige: dicGVGVestige,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||||
@@ -1153,11 +1158,17 @@ export function getGVGTasksByType(taskType: number) {
|
|||||||
let taskIds = gameData.gvgTaskByType.get(taskType)||[];
|
let taskIds = gameData.gvgTaskByType.get(taskType)||[];
|
||||||
return taskIds.map(taskId => {
|
return taskIds.map(taskId => {
|
||||||
let dic = gameData.gvgTask.get(taskId);
|
let dic = gameData.gvgTask.get(taskId);
|
||||||
console.log(taskId, dic)
|
|
||||||
return 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() {
|
function initDatas() {
|
||||||
parseDicParam();
|
parseDicParam();
|
||||||
@@ -1181,6 +1192,7 @@ function parseDicParam() {
|
|||||||
parseGVGActive();
|
parseGVGActive();
|
||||||
parseGVGFieldAdd();
|
parseGVGFieldAdd();
|
||||||
parseGVGSpFieldRatio();
|
parseGVGSpFieldRatio();
|
||||||
|
parseGVGVestigeCnt();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1365,6 +1377,8 @@ function loadDatas() {
|
|||||||
loadGVGArea();
|
loadGVGArea();
|
||||||
loadGVGCityAdd();
|
loadGVGCityAdd();
|
||||||
loadGVGTask();
|
loadGVGTask();
|
||||||
|
loadGVGVestigeType();
|
||||||
|
loadGVGVestige();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重载dicParam
|
// 重载dicParam
|
||||||
|
|||||||
@@ -4,21 +4,21 @@ import { parseNumberList, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGArea {
|
export interface DicGVGArea {
|
||||||
// 区域id
|
// 区域id
|
||||||
areaId: number;
|
readonly areaId: number;
|
||||||
// 大地图id
|
// 大地图id
|
||||||
mapId: string
|
readonly mapId: string
|
||||||
// 大地图类型 1-单服 2-跨服
|
// 大地图类型 1-单服 2-跨服
|
||||||
mapType: number;
|
readonly mapType: number;
|
||||||
// 城池id
|
// 城池id
|
||||||
cityId: number;
|
readonly cityId: number;
|
||||||
// 城池类型
|
// 城池类型
|
||||||
cityType: number;
|
readonly cityType: number;
|
||||||
// 区域类型 1-守方备战区 2-攻方备战区 3-大据点区 4-中据点区 5-小据点区 6-投石车区
|
// 区域类型 1-守方备战区 2-攻方备战区 3-大据点区 4-中据点区 5-小据点区 6-投石车区
|
||||||
areaType: number;
|
readonly areaType: number;
|
||||||
// 区域管理
|
// 区域管理
|
||||||
relateArea: number[];
|
readonly relateArea: number[];
|
||||||
// 0表不能被投石车选中作为攻击区域,1表能
|
// 0表不能被投石车选中作为攻击区域,1表能
|
||||||
catapultAttack: number;
|
readonly catapultAttack: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const dicGVGArea = new Map<number, DicGVGArea>();
|
export const dicGVGArea = new Map<number, DicGVGArea>();
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ import { readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGCityAdd {
|
export interface DicGVGCityAdd {
|
||||||
// 城池类型 1-大城 2-中城 3-小城
|
// 城池类型 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<number, DicGVGCityAdd>();
|
export const dicGVGCityAdd = new Map<number, DicGVGCityAdd>();
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ import { parseGoodStr, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGContributeBox {
|
export interface DicGVGContributeBox {
|
||||||
// 唯一id
|
// 唯一id
|
||||||
id: number;
|
readonly id: number;
|
||||||
// 职能 1-贤臣 2-猛将
|
// 职能 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<number, DicGVGContributeBox>();
|
export const dicGVGContributeBox = new Map<number, DicGVGContributeBox>();
|
||||||
|
|||||||
@@ -5,25 +5,25 @@ import { parseGoodStr, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGItem {
|
export interface DicGVGItem {
|
||||||
// 道具id
|
// 道具id
|
||||||
id: number;
|
readonly id: number;
|
||||||
// 点名称
|
// 点名称
|
||||||
name: string
|
readonly name: string
|
||||||
// 1-种子 2-铲子 3-斧子 4-内政外政令 5-战功 6-激战期用的复活令&匕首
|
// 1-种子 2-铲子 3-斧子 4-内政外政令 5-战功 6-激战期用的复活令&匕首
|
||||||
type: number;
|
readonly type: number;
|
||||||
// 1-每日刷新 2-赛期内刷新
|
// 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<number, DicGVGItem>();
|
export const dicGVGItem = new Map<number, DicGVGItem>();
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ import { parseGoodStr, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGLeagueLv {
|
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<number, DicGVGLeagueLv>();
|
export const dicGVGLeagueLv = new Map<number, DicGVGLeagueLv>();
|
||||||
|
|||||||
@@ -5,25 +5,25 @@ const _ = require('lodash');
|
|||||||
|
|
||||||
export interface DicGVGResourceBase {
|
export interface DicGVGResourceBase {
|
||||||
// 唯一id
|
// 唯一id
|
||||||
id: number;
|
readonly id: number;
|
||||||
// 名称
|
// 名称
|
||||||
name: string
|
readonly name: string
|
||||||
// 农庄等级
|
// 农庄等级
|
||||||
lv: number;
|
readonly lv: number;
|
||||||
// 类型 1-农田 2-矿场 3-木堆
|
// 类型 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<T> = { [P in keyof Required<T>]: true };
|
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||||||
|
|||||||
@@ -5,19 +5,19 @@ import { parseGoodStr, parseNumberList, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGTask {
|
export interface DicGVGTask {
|
||||||
// 唯一id
|
// 唯一id
|
||||||
id: number;
|
readonly id: number;
|
||||||
// 任务id
|
// 任务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<number, DicGVGTask>();
|
export const dicGVGTask = new Map<number, DicGVGTask>();
|
||||||
|
|||||||
@@ -4,23 +4,23 @@ import { decodeArrayListStr, parseNumberList, readFileAndParse } from '../util'
|
|||||||
|
|
||||||
export interface DicGVGTech {
|
export interface DicGVGTech {
|
||||||
// 唯一id
|
// 唯一id
|
||||||
id: number;
|
readonly id: number;
|
||||||
// 点名称
|
// 点名称
|
||||||
name: string
|
readonly name: string
|
||||||
// 激活后获得的内容
|
// 激活后获得的内容
|
||||||
content: string;
|
readonly content: string;
|
||||||
// 效果类型 1-资源产量上传 2-征战中原提升 3-激战期提升 4-复活cd减少 5-箭塔 6-攻城车
|
// 效果类型 1-资源产量上传 2-征战中原提升 3-激战期提升 4-复活cd减少 5-箭塔 6-攻城车
|
||||||
type: number;
|
readonly type: number;
|
||||||
// 资源提升量啊,复活cd减少量啊之类的值
|
// 资源提升量啊,复活cd减少量啊之类的值
|
||||||
param: number[];
|
readonly param: number[];
|
||||||
// 点排序
|
// 点排序
|
||||||
nodeSort: number;
|
readonly nodeSort: number;
|
||||||
// 联军等级限制
|
// 联军等级限制
|
||||||
levelLimit: number;
|
readonly levelLimit: number;
|
||||||
// 前置id
|
// 前置id
|
||||||
prepositionId: number[][];
|
readonly prepositionId: number[][];
|
||||||
// 所需的战功
|
// 所需的战功
|
||||||
consume: number;
|
readonly consume: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const dicGVGTech = new Map<number, DicGVGTech>();
|
export const dicGVGTech = new Map<number, DicGVGTech>();
|
||||||
|
|||||||
@@ -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<number, Map<number, DicGVGVestige>>(); // 遗迹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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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<number, DicGVGVestigeType[]>(); // 地图类型 => 遗迹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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user