✨ feat(gvg): 添加策划表解析
This commit is contained in:
@@ -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 = [
|
||||
|
||||
@@ -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<number, number>(), // 单服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
|
||||
|
||||
@@ -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<number, DicGVGArea>();
|
||||
|
||||
@@ -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<number, DicGVGCityAdd>();
|
||||
|
||||
@@ -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<number, DicGVGContributeBox>();
|
||||
|
||||
@@ -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<number, DicGVGItem>();
|
||||
|
||||
@@ -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<number, DicGVGLeagueLv>();
|
||||
|
||||
@@ -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<T> = { [P in keyof Required<T>]: true };
|
||||
|
||||
@@ -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<number, DicGVGTask>();
|
||||
|
||||
@@ -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<number, DicGVGTech>();
|
||||
|
||||
51
shared/pubUtils/dictionary/DicGVGVestige.ts
Normal file
51
shared/pubUtils/dictionary/DicGVGVestige.ts
Normal file
@@ -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;
|
||||
}
|
||||
30
shared/pubUtils/dictionary/DicGVGVestigeLeagueRank.ts
Normal file
30
shared/pubUtils/dictionary/DicGVGVestigeLeagueRank.ts
Normal file
@@ -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;
|
||||
}
|
||||
31
shared/pubUtils/dictionary/DicGVGVestigeType.ts
Normal file
31
shared/pubUtils/dictionary/DicGVGVestigeType.ts
Normal file
@@ -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