✨ feat(gvg): 添加策划表解析

This commit is contained in:
luying
2023-02-17 10:58:06 +08:00
parent 2a2922dc03
commit 3a71d7da97
13 changed files with 188 additions and 59 deletions
+3
View File
@@ -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
View File
@@ -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
+8 -8
View File
@@ -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 -4
View File
@@ -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>();
+10 -10
View File
@@ -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 -5
View File
@@ -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 };
+7 -7
View File
@@ -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>();
+9 -9
View File
@@ -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;
}