✨ feat(gvg): 农庄
This commit is contained in:
@@ -121,6 +121,8 @@ import { dicGiftPackagePlan, loadGiftPackagePlan } from "./dictionary/DicGiftPac
|
||||
import { dicGVGPeriod, loadGVGPeriod } from './dictionary/DicGVGPeriod';
|
||||
import { dicGVGTech, loadGVGTech } from "./dictionary/DicGVGTech";
|
||||
import { dicGVGItem, loadGVGItem } from "./dictionary/DicGVGItems";
|
||||
import { dicGVGLeagueLv, loadGVGLeagueLv } from "./dictionary/DicGVGLeagueLv";
|
||||
import { dicGVGResourceBase, dicGVGResourceBaseByType, dicGVGResourceBaseByLv, loadGVGResourceBase, DicGVGResourceBase } from './dictionary/DicGVGResourceBase';
|
||||
|
||||
export const gameData = {
|
||||
daily: dicDaily,
|
||||
@@ -302,6 +304,12 @@ export const gameData = {
|
||||
gvgTech: dicGVGTech,
|
||||
gvgItem: dicGVGItem,
|
||||
gvgActive: new Map<number, number>(),
|
||||
gvgLeagueLv: dicGVGLeagueLv,
|
||||
gvgResource: dicGVGResourceBase,
|
||||
gvgResourceBaseByType: dicGVGResourceBaseByType,
|
||||
gvgResourceBaseByLv: dicGVGResourceBaseByLv,
|
||||
gvgFieldAddType: new Map<number, number>(),
|
||||
gvgSpFieldRatio: { min: 0, max: 0},
|
||||
};
|
||||
|
||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||
@@ -1081,6 +1089,57 @@ function parseGVGActive() {
|
||||
}
|
||||
}
|
||||
|
||||
export function calLeagueLv(resources: { food: number, mineral: number, wood: number }) {
|
||||
let lv = 1;
|
||||
for(let [curLv, dic] of gameData.gvgLeagueLv) {
|
||||
lv = curLv;
|
||||
if(resources.food < dic.food || resources.mineral < dic.mineral || resources.wood < dic.wood) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return lv
|
||||
}
|
||||
|
||||
export function getGVGResourceBasesByType(type: number) {
|
||||
const ids = gameData.gvgResourceBaseByType.get(type)||[];
|
||||
const result: DicGVGResourceBase[] = [];
|
||||
for(let id of ids) {
|
||||
let dicResource = gameData.gvgResource.get(id);
|
||||
if(dicResource) result.push(dicResource);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export function getGVGResourceBaseByTypeAndLv(type: number, lv: number) {
|
||||
let id = gameData.gvgResourceBaseByLv.get(`${type}_${lv}`);
|
||||
return gameData.gvgResource.get(id);
|
||||
}
|
||||
|
||||
|
||||
// 获取农庄小游戏最多能有多少特殊加成田
|
||||
export function getFieldMaxAddType(farmId: number) {
|
||||
let add = new Map<number, number>();
|
||||
let dicResource = gameData.gvgResource.get(farmId);
|
||||
if(!dicResource) return add;
|
||||
for(let [type, ratio] of gameData.gvgFieldAddType) {
|
||||
add.set(type, Math.floor(dicResource.sum * ratio / 100))
|
||||
}
|
||||
return add;
|
||||
}
|
||||
|
||||
function parseGVGFieldAdd() {
|
||||
let arr = decodeArrayListStr(param.GVG.GVG_FIELD_TYPE_RATIO);
|
||||
for(let [type, ratio] of arr) {
|
||||
gameData.gvgFieldAddType.set(parseInt(type), parseFloat(ratio));
|
||||
}
|
||||
}
|
||||
|
||||
function parseGVGSpFieldRatio() {
|
||||
let arr = param.GVG.GVG_SP_FIELD_RATIO.split('&');
|
||||
gameData.gvgSpFieldRatio.min = parseFloat(arr[0]);
|
||||
gameData.gvgSpFieldRatio.max = parseFloat(arr[0]);
|
||||
}
|
||||
|
||||
// 初始加载
|
||||
function initDatas() {
|
||||
parseDicParam();
|
||||
@@ -1102,6 +1161,8 @@ function parseDicParam() {
|
||||
decodeLadderBuyCost();
|
||||
parseComBattleRewardTime();
|
||||
parseGVGActive();
|
||||
parseGVGFieldAdd();
|
||||
parseGVGSpFieldRatio();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1280,6 +1341,8 @@ function loadDatas() {
|
||||
loadGVGPeriod();
|
||||
loadGVGTech();
|
||||
loadGVGItem();
|
||||
loadGVGLeagueLv();
|
||||
loadGVGResourceBase();
|
||||
}
|
||||
|
||||
// 重载dicParam
|
||||
|
||||
Reference in New Issue
Block a user