예제 #1
0
        private async Task <RoomDto> TryJoinOpenedRoomAsync()
        {
            var roomList = await client.GetOpenedRoomsAsync(playerId).ConfigureAwait(false);

            logger.Info($"Найдено {roomList.Rooms.Length} открытых комнат");

            var openedRoom = roomList.Rooms.FirstOrDefault();

            if (openedRoom != default)
            {
                logger.Info($"Пытаюсь подключиться к комнате {openedRoom.Id}");

                var joinRequest = new JoinRoomRequestDto {
                    PlayerName = playerName
                };
                var joinResult = await client.JoinRoomAsync(joinRequest, openedRoom.Id, playerId).ConfigureAwait(false);

                if (joinResult.Success)
                {
                    var room = await client.GetRoomAsync(openedRoom.Id, playerId).ConfigureAwait(false);

                    logger.Info($"Удалось подключиться к комнате {room.Id}, имя соперника {room.Players.First(x => x.Id != playerId).Name}");

                    return(room);
                }
            }

            return(default);
예제 #2
0
        public async Task <IActionResult> JoinRoom([FromBody] JoinRoomRequestDto req)
        {
            // join a room
            await _room.Groups.AddToGroupAsync(req.ConnectionId, req.RoomName);

            return(Ok());
        }
예제 #3
0
파일: Client.cs 프로젝트: maradik/sea-war
        public async Task <JoinRoomResponseDto> JoinRoomAsync(JoinRoomRequestDto parameters, Guid roomId, Guid playerId)
        {
            var content  = new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, "application/json");
            var response = await httpClient.PostAsync($"/v2/rooms/{roomId}/join?playerId={playerId}", content).ConfigureAwait(false);

            var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            logger.Info($"{nameof(JoinRoomAsync)}:Response:{json}");

            return(JsonConvert.DeserializeObject <JoinRoomResponseDto>(json));
        }
예제 #4
0
 public Task <JoinRoomResponseDto> JoinRoomAsync(JoinRoomRequestDto parameters, Guid roomId, Guid playerId) =>
 RetryAsync(x => client.JoinRoomAsync(x.parameters, x.roomId, x.playerId), (parameters, roomId, playerId));