private void LoadQlstatsPlayerList(ServerRow row, Action callback = null) { this.qlstatsPlayerlists[row] = null; using (var client = new XWebClient(2000)) { client.Encoding = Encoding.UTF8; client.DownloadStringCompleted += (sender, args) => { try { using (var strm = new MemoryStream(Encoding.UTF8.GetBytes(args.Result))) { var playerList = (QlstatsPlayerList)playerListJsonParser.ReadObject(strm); this.qlstatsPlayerlists[row] = playerList; if (playerList.serverinfo != null) { this.skillInfo[row.EndPoint.ToString()] = playerList.serverinfo; } callback?.Invoke(); } } catch { } }; client.DownloadStringAsync(new Uri("http://api.qlstats.net/api/server/" + row.EndPoint + "/players")); } }
private void LoadQlstatsPersonalRating() { if (this.Steamworks == null) { return; } var steamid = this.Steamworks.GetUserID(); if (steamid == 0) { return; } using (var client = new XWebClient(2000)) { client.DownloadStringCompleted += (sender, args) => { try { using (var strm = new MemoryStream(Encoding.UTF8.GetBytes(args.Result))) { var result = (QlstatsGlickoRating)personalSkillJsonParser.ReadObject(strm); var text = "\n\nYour personal rating: estimate ± uncertainty:"; foreach (var player in result.players) { var gametypes = new[] { "ffa", "ca", "duel", "ctf", "tdm", "ft" }; var ratings = new[] { player.ffa, player.ca, player.duel, player.ctf, player.tdm, player.ft }; for (int i = 0; i < gametypes.Length; i++) { var rating = ratings[i]; if (rating == null) { continue; } text += $"\n{gametypes[i].ToUpper()}: {rating.r} ± {rating.rd} ({rating.games} games)"; } if (gametypes.Length == 0) { text = ""; } } if (this.colSkill?.View?.GridControl == null) { return; } this.colSkill.View.GridControl.BeginInvoke((Action)(() => { this.colSkill.ToolTip = SkillTooltip + text; })); } } catch { } }; client.DownloadStringAsync(new Uri("http://qlstats.net/glicko/" + steamid)); } }
private void LoadQlstatsServerRatings() { using (var client = new XWebClient(2000)) { client.DownloadStringCompleted += (sender, args) => { try { if (args.Error != null) { return; } using (var strm = new MemoryStream(Encoding.UTF8.GetBytes(args.Result))) { var servers = (QlStatsSkillInfo[])serverSkillJsonParser.ReadObject(strm); var dict = new Dictionary <string, QlStatsSkillInfo>(); foreach (var server in servers) { dict[server.server] = server; } this.skillInfo = dict; var view = this.colSkill?.View; var grid = view?.GridControl; if (grid == null) { return; } grid.BeginInvoke((Action)(() => { for (int i = 0, c = view.RowCount; i < c; i++) { var row = (ServerRow)view.GetRow(i); var info = dict.GetValueOrDefault(row.EndPoint.ToString(), null); if (info != null) { row.PlayerCount.Update(); } } })); } } catch { } }; client.DownloadStringAsync(new Uri("http://api.qlstats.net/api/server/skillrating")); } }