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

This commit is contained in:
luying
2023-01-30 10:21:36 +08:00
parent 2a2922dc03
commit 3a71d7da97
13 changed files with 188 additions and 59 deletions

View File

@@ -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 = [

View File

@@ -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

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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>();

View File

@@ -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 };

View File

@@ -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>();

View File

@@ -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>();

View 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;
}

View 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;
}

View 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;
}