diff --git a/game-server/app/servers/guild/handler/gvgBattleHandler.ts b/game-server/app/servers/guild/handler/gvgBattleHandler.ts index 77b8c0bdf..1fbfb51e1 100644 --- a/game-server/app/servers/guild/handler/gvgBattleHandler.ts +++ b/game-server/app/servers/guild/handler/gvgBattleHandler.ts @@ -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, getSpineCnt } from '../../../services/gvg/gvgBattleService'; +import { redisAddBattleScore, battleEndSendMessage, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanksByCity, getBirthAreaOfCity, getGVGWarId, getOppHeroes, getTechKnifeHurt, getTechReviveMinus, initRobots, pushTeamMoveMessage, getAllGVGCitiesInfo, 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'; @@ -700,7 +700,8 @@ export class GVGBattleHandler { let { configId } = getGVGPeriodData(); let groupKey = await getGroupKey(serverId); - let cities = await getGVGCitiesInfo(configId, groupKey); + let serverType = await getGVGServerType(serverId); + let cities = await getAllGVGCitiesInfo(configId, groupKey, serverType); let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode); if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST); diff --git a/game-server/app/servers/guild/handler/gvgHandler.ts b/game-server/app/servers/guild/handler/gvgHandler.ts index bd7a6604c..64f9e4173 100644 --- a/game-server/app/servers/guild/handler/gvgHandler.ts +++ b/game-server/app/servers/guild/handler/gvgHandler.ts @@ -587,7 +587,7 @@ export class GVGHandler { const guilds = await GuildModel.findByCodesWithoutPopulate(leagues.reduce((pre, cur) => [...pre, ...cur.guildCodes], [])); const result: GuardCityInfoPage[] = []; - for(let { cityId, guardLeagueCode } of result) { + for(let { cityId, guardLeague: guardLeagueCode } of cities) { let league = leagues.find(cur => cur.leagueCode == guardLeagueCode); if(!league) continue; let prepare = prepares.find(cur => cur.leagueCode == guardLeagueCode); @@ -596,6 +596,7 @@ export class GVGHandler { let data = new GuardCityInfoPage(cityId); data.setGuardLeague(league, prepare, leagueCe); + result.push(data); } return resResult(STATUS.SUCCESS, { diff --git a/game-server/app/services/gvg/gvgBattleService.ts b/game-server/app/services/gvg/gvgBattleService.ts index 80c13b8d8..feda1edf7 100644 --- a/game-server/app/services/gvg/gvgBattleService.ts +++ b/game-server/app/services/gvg/gvgBattleService.ts @@ -49,7 +49,8 @@ export async function getGVGCitiesInfo(configId: number, groupKey: string, leagu let cities = await GVGCityModel.findGuardCity(configId, groupKey); let result: GVGCityMapInfo[] = []; for(let city of cities) { - let obj = new GVGCityMapInfo(city); + let obj = new GVGCityMapInfo(city.cityId); + obj.setCity(city); if(league) { let players = (city.players||[]).filter(cur => cur.leagueCode == league.leagueCode); obj.setTeamCnt(players.length); @@ -62,6 +63,19 @@ export async function getGVGCitiesInfo(configId: number, groupKey: string, leagu return result; } +export async function getAllGVGCitiesInfo(configId: number, groupKey: string, serverType: number) { + let cities = await GVGCityModel.findGuardCity(configId, groupKey); + let result: GVGCityMapInfo[] = []; + for(let [cityId, { mapType }] of gameData.gvgCity) { + if(mapType != serverType) continue; + let obj = new GVGCityMapInfo(cityId); + let city = cities.find(cur => cur.cityId == cityId); + obj.setCity(city); + result.push(obj); + } + return result +} + /** * 获取内存中队伍的数据结构 */ diff --git a/shared/db/GVGLeaguePrepare.ts b/shared/db/GVGLeaguePrepare.ts index c5b4d57ac..ee141a33a 100644 --- a/shared/db/GVGLeaguePrepare.ts +++ b/shared/db/GVGLeaguePrepare.ts @@ -103,7 +103,7 @@ export default class GVGLeaguePrepare extends BaseModel { public static async findByLeagueCodes(configId: number, leagueCodes: string[]) { - const result: GVGLeaguePrepareType[] = await GVGLeaguePrepareModel.findOne({ configId, leagueCode: { $in: leagueCodes } }).lean(); + const result: GVGLeaguePrepareType[] = await GVGLeaguePrepareModel.find({ configId, leagueCode: { $in: leagueCodes } }).lean(); return result; } diff --git a/shared/domain/gvgField/returnData.ts b/shared/domain/gvgField/returnData.ts index 6ed7b7337..9fdbb166f 100644 --- a/shared/domain/gvgField/returnData.ts +++ b/shared/domain/gvgField/returnData.ts @@ -626,15 +626,18 @@ export class VestigeRank { // 大地图上城池占林 export class GVGCityMapInfo { cityId: number; // 城池id - guardLeagueCode: string; // 驻守城池的联军id - guardLeagueName: string; // 驻守这个城池的联军 - guardLeagueIcon: number; // 驻守这个城池的联军的icon + guardLeagueCode: string = ''; // 驻守城池的联军id + guardLeagueName: string = ''; // 驻守这个城池的联军 + guardLeagueIcon: number = 0; // 驻守这个城池的联军的icon teamCnt: number; // 我方人数 score: number; - constructor(city: GVGCityType) { + constructor(cityId: number) { + this.cityId = cityId; + } + + setCity(city: GVGCityType) { if(!city) return; - this.cityId = city.cityId; this.guardLeagueCode = city.guardLeague; this.guardLeagueName = city.guardLeagueName; this.guardLeagueIcon = city.guardLeagueIcon;