Ejemplo n.º 1
0
        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"));
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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"));
            }
        }