🐞 fix(gvg): 调整spine下发数量开关
This commit is contained in:
@@ -7,7 +7,7 @@ import { Application, BackendSession, ChannelService, HandlerService, pinus } fr
|
||||
import { resResult, genCode, getRandSingleEelm } from "../../../pubUtils/util";
|
||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||
import { getGroupKey, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
||||
import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank, checkSettleStatus } from '../../../services/gvg/gvgBattleService';
|
||||
import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getGVGCitiesInfo, leaveCity, refreshTeams, checkEnterCityTime, generNewLineup, getBattleRank, checkSettleStatus, getSpineCnt } from '../../../services/gvg/gvgBattleService';
|
||||
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||
import { getFightTimeByPeriod } from '../../../services/gvg/gvgFightService';
|
||||
@@ -269,8 +269,9 @@ export class GVGBattleHandler {
|
||||
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
let result: GVGTeamSpineInMap[] = [];
|
||||
let spineCnt = await getSpineCnt();
|
||||
for(let areaId of areaIds) {
|
||||
let teams = teamObj.findTeamsByArea(areaId);
|
||||
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||
for(let team of teams) {
|
||||
result.push(new GVGTeamSpineInMap(team, serverNames))
|
||||
}
|
||||
@@ -756,7 +757,7 @@ export class GVGBattleHandler {
|
||||
// 更新内存数据
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
teamObj.move(teamMem.teamCode, toAreaId, team.fromAreaId, team.startMoveTime, team.stopMoveTime);
|
||||
await pushTeamMoveMessage(team);
|
||||
// await pushTeamMoveMessage(team);
|
||||
}, i * 100);
|
||||
}
|
||||
|
||||
@@ -780,10 +781,10 @@ export class GVGBattleHandler {
|
||||
if(this.attackInterval) {
|
||||
clearInterval(this.attackInterval);
|
||||
}
|
||||
|
||||
let spineCnt = await getSpineCnt();
|
||||
let fun = async () => {
|
||||
for(let areaId of teamObj.findAreas()) {
|
||||
let teams = teamObj.findTeamsByArea(areaId);
|
||||
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||
let areaTeams = teams.map(team => new GVGTeamInList(team as any));
|
||||
await sendMessageToGVGAreaByTeamWithSuc(teamObj.groupKey, areaId, PUSH_ROUTE.GVG_TEAM_ATTACKED, {
|
||||
cityId, areaId, attackType: GVG_ATTACK_TYPE.PLAYER, teams: areaTeams
|
||||
|
||||
@@ -24,14 +24,19 @@ class GVGBattleData {
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
public findTeamsByArea(areaId: number) {
|
||||
public findTeamsByArea(areaId: number, count: number) {
|
||||
let teamCodes = this.areaToTeams.get(areaId)||new Set();
|
||||
let teams: GVGTeamMem[] = [];
|
||||
let otherTeams: GVGTeamMem[] = [], robots: GVGTeamMem[] = [], points: GVGTeamMem[] = [];
|
||||
for(let teamCode of teamCodes) {
|
||||
let team = this.teams.get(teamCode);
|
||||
if(team && !team.isBroken) teams.push(team);
|
||||
if(team && !team.isBroken) {
|
||||
if(team.pointId > 0) { points.push(team); continue; }
|
||||
if(team.isRobot) { robots.push(team); continue; }
|
||||
otherTeams.push(team);
|
||||
}
|
||||
}
|
||||
return teams.slice(0, 20);
|
||||
let teams = [...points, ...robots, ...otherTeams];
|
||||
return teams.slice(0, count);
|
||||
}
|
||||
|
||||
public findCatapultAttackTeam(areaId: number, leagueCode: string) {
|
||||
|
||||
@@ -451,6 +451,11 @@ export async function redisAddSettleScore(gvgTeam: GVGTeamType, incScore: number
|
||||
await r2.setRankWithLeagueInfo(leagueCode, incScore, Date.now(), null, true);
|
||||
}
|
||||
|
||||
export async function getSpineCnt() {
|
||||
let cnt = await redisClient().getAsync(REDIS_KEY.GVG_SPINE_CNT);
|
||||
return cnt? parseInt(cnt): 20;
|
||||
}
|
||||
|
||||
// 获取排行榜
|
||||
export async function getBattleRanksByCity(configId: number, groupKey: string, cityId: number, myLeague?: GVGLeagueType) {
|
||||
let teamObj = getGVGBattleData(groupKey);
|
||||
@@ -478,6 +483,8 @@ export async function gvgBattleSeconds() {
|
||||
const { configId, period } = getGVGPeriodData();
|
||||
let { startFightTime, endFightTime } = getFightTimeByPeriod(period);
|
||||
const serverNames = await getAllServerName();
|
||||
|
||||
let spineCnt = await getSpineCnt();
|
||||
let keys: { groupKey: string, cityId: number }[] = []
|
||||
for(let [_key, teamObj] of getGVGBattleMap()) {
|
||||
// console.log('#### gvgBattleSeconds groupKey: ', _key, 'areas', teamObj.findAreas(), 'appid', pinus.app.getServerId());
|
||||
@@ -495,7 +502,7 @@ export async function gvgBattleSeconds() {
|
||||
let spinesByCity = new Map<number, GVGTeamSpineInMap[]>();
|
||||
for(let areaId of teamObj.findAreas()) {
|
||||
let dicArea = gameData.gvgArea.get(areaId);
|
||||
let teams = teamObj.findTeamsByArea(areaId);
|
||||
let teams = teamObj.findTeamsByArea(areaId, spineCnt);
|
||||
let spines = teams.map(team => new GVGTeamSpineInMap(team, serverNames));
|
||||
if(!spinesByCity.has(dicArea.cityId)) spinesByCity.set(dicArea.cityId, []);
|
||||
spinesByCity.get(dicArea.cityId).push(...spines);
|
||||
|
||||
@@ -266,6 +266,7 @@ export enum REDIS_KEY {
|
||||
GVG_HISTORY_AREA_TEAM ='gvgHisAreaTeam', // gvg激战期玩家加入的区域
|
||||
GVG_HISTORY_CITY ='gvgHisCity', // gvg激战期玩家进入的城池
|
||||
GVG_SEND_REWARD ='gvgSendReward', // gvg发放奖励
|
||||
GVG_SPINE_CNT ='gvgSpineCnt', // gvg spine的下发数量
|
||||
}
|
||||
|
||||
// 各排行榜对应hash的key
|
||||
|
||||
Reference in New Issue
Block a user