From 87bde927d29307ec63f0e23e15373569e8d2f7a7 Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 17 Aug 2022 14:00:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8D=E5=B0=86=E6=93=82=E5=8F=B0=EF=BC=9A?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/ladderService.ts | 27 +++++++++++++---------- shared/domain/battleField/ladder.ts | 11 ++++----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/game-server/app/services/ladderService.ts b/game-server/app/services/ladderService.ts index 6bc95a279..1da5d824b 100644 --- a/game-server/app/services/ladderService.ts +++ b/game-server/app/services/ladderService.ts @@ -88,7 +88,7 @@ export async function getLadderEnemies(ladderData: LadderMatchType) { async function getOppPlayerDetailByDb(serverId: number, oppPlayers: LadderOppPlayerInDB[]) { let oppPlayersReturn: LadderOppPlayerReturn[] = []; for(let oppPlayer of oppPlayers) { - let player = await generateOppPlayer(serverId, oppPlayer.rank, oppPlayers); + let player = await generateOppPlayer(serverId, oppPlayer.rank); oppPlayersReturn.push(player); } return oppPlayersReturn; @@ -112,23 +112,26 @@ export async function generateOppPlayers(rankNumbers: number[], serverId: number let oppPlayers: LadderOppPlayerReturn[] = [], oppPlayersSave: LadderOppPlayerInDB[] = []; for(let rank of rankNumbers) { - let player = await generateOppPlayer(serverId, rank, ranks); - oppPlayersSave.push({ rank, roleId: player.roleId, isRobot: player.isRobot }); + let player = await generateOppPlayer(serverId, rank); + oppPlayersSave.push({ rank }); oppPlayers.push(player); } await LadderMatchModel.updateByRoleId(roleId, { ...update, oppPlayers: oppPlayersSave }); return oppPlayers } -async function generateOppPlayer(serverId: number, rank: number, oppPlayers: { rank: number, roleId: string, isRobot?: boolean }[]) { - let player = oppPlayers.find(cur => cur.rank == rank && !cur.isRobot); - let result = new LadderOppPlayerReturn(rank, !player || rank == 3001); - if(player && rank != 3001) { - let r = new Rank(REDIS_KEY.LADDER, { serverId }, false); - let param = await r.getParam(player.rank, player.roleId, [player.rank]); - let defCe = await getLadderDefCe(player.roleId); - result.setByRedis(param, parseInt(`${defCe}`)); - } else { +async function generateOppPlayer(serverId: number, rank: number) { + let r = new Rank(REDIS_KEY.LADDER, { serverId }, false); + let result = new LadderOppPlayerReturn(rank); + if(rank < 3001) { + let players = await r.getRankByRange(rank, rank); + if(players.length > 0) { + let player = players[0]; + let defCe = await getLadderDefCe(player.roleId); + result.setByRedis(player, parseInt(`${defCe}`)); + } + } + if(!result.roleId) { let dicLadderDifficultRatio = gameData.ladderDifficultRatio.get(rank); result.setByRobot(dicLadderDifficultRatio); } diff --git a/shared/domain/battleField/ladder.ts b/shared/domain/battleField/ladder.ts index 7edacdd38..f29e6ad35 100644 --- a/shared/domain/battleField/ladder.ts +++ b/shared/domain/battleField/ladder.ts @@ -54,10 +54,6 @@ export class LadderDefense { export class LadderOppPlayerInDB { @prop({ required: true }) rank: number; - @prop({ required: true }) - roleId: string; - @prop({ required: true }) - isRobot: boolean; } // ladderMatchRec @@ -206,13 +202,12 @@ export class LadderOppPlayerReturn { defCe: number = 0; // 对手防守阵容战力 isRobot: boolean = true; // 是否是机器人 - constructor(rank: number, isRobot: boolean) { + constructor(rank: number) { this.rank = rank; - this.isRobot = isRobot; - if(isRobot) this.roleId = `robot${this.rank}`; } setByRedis(param: RoleRankInfo, defCe: number) { + this.isRobot = false; this.roleId = param.roleId; this.roleName = param.roleName; this.head = param.head; @@ -224,6 +219,8 @@ export class LadderOppPlayerReturn { } setByRobot(ladderDifficultRatio: DicLadderDifficultRatio) { + this.isRobot = true; + this.roleId = `robot${this.rank}`; this.head = ladderDifficultRatio.head; this.spine = ladderDifficultRatio.spine; this.lv = ladderDifficultRatio.level;