diff --git a/src/global.d.ts b/src/global.d.ts index ee8da43..621ab06 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -260,6 +260,11 @@ declare module "colyseus" { */ getAssistClient(sessionId: string): RobotClient; + /** + * 获取对位玩家 + * @param srcPlayer + */ + getOppositePlayer(srcPlayer: string|Player): Player; } } diff --git a/src/rooms/GeneralRoom.ts b/src/rooms/GeneralRoom.ts index 76ee8b2..724dfae 100644 --- a/src/rooms/GeneralRoom.ts +++ b/src/rooms/GeneralRoom.ts @@ -282,4 +282,20 @@ export class GeneralRoom extends Room { getAssistClient(sessionId: string): RobotClient { return this.assistMap.get(sessionId); } + + getOppositePlayer(srcPlayer: string | Player): Player { + let playerId; + if (typeof srcPlayer === 'string') { + playerId = srcPlayer as string; + } else { + playerId = srcPlayer.id; + } + if (!this.state.players.has(playerId)) { + return null; + } + const sessionIds = [...this.state.players.keys()]; + let idx = sessionIds.indexOf(playerId); + let playerId2 = sessionIds[(2 + idx) % 4]; + return this.state.players.get(playerId2); + } }