public async Task <FireResponseDto> FireAsync(FireRequestDto parameters, Guid roomId, Guid playerId) { var content = new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync($"/v2/rooms/{roomId}/game/fire?playerId={playerId}", content).ConfigureAwait(false); var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false); logger.Info($"{nameof(FireAsync)}:Response:{json}"); return(JsonConvert.DeserializeObject <FireResponseDto>(json)); }
private async Task <MapForEnemyDto> FireAsync(MapForEnemyDto opponentMap, RoomDto room) { while (true) { var(x, y) = (random.Next(10), random.Next(10)); if (opponentMap.Cells[x, y].Status == CellForEnemyDtoStatus.Unknown) { var fireRequest = new FireRequestDto { X = x, Y = y }; var fireResult = await client.FireAsync(fireRequest, room.Id, playerId).ConfigureAwait(false); logger.Info($"Выстрел по координате {(x,y)} с результатом {fireResult.EnemyMap.Cells[x,y].Status}"); return(fireResult.EnemyMap); } } }
public Task <FireResponseDto> FireAsync(FireRequestDto parameters, Guid roomId, Guid playerId) => RetryAsync(x => client.FireAsync(x.parameters, x.roomId, x.playerId), (parameters, roomId, playerId));