Exemplo n.º 1
0
        private void UpdatePlayerInfos(ServerRow server)
        {
            // no need for update if it's the same server and update timestamp
            if (server == this.serverForPlayerInfos && server.RequestTimestamp == this.dataTimestamp && this.playerInfos.Count > 0)
            {
                return;
            }

            this.serverForPlayerInfos = server;
            this.dataTimestamp        = server.RequestTimestamp;
            var newPlayerInfos = new Dictionary <string, ToxikkPlayerInfo>();

            var strNames = (server.GetRule("p1073741832") ?? "") + (server.GetRule("p1073741833") ?? "") + (server.GetRule("p1073741834") ?? "");

            if (string.IsNullOrEmpty(strNames))
            {
                return;
            }
            var  gameType    = (string)server.GetExtenderCellValue("_gametype");
            bool isTeamGame  = "SA,CC,AD,SS,TA,SB,IB,2v2,4v4".Contains(gameType);
            var  strSteamIds = (server.GetRule("p1073741829") ?? "") + (server.GetRule("p1073741830") ?? "") + (server.GetRule("p1073741831") ?? "");
            var  strSkill    = server.GetRule("p1073741837") ?? "";
            var  strRank     = server.GetRule("p1073741838") ?? "";
            int  teamSepIdx  = strNames.IndexOf(';');
            var  names       = strNames.Split(',', ';');
            var  steamIds    = strSteamIds.Split(',', ';');
            var  skills      = strSkill.Split(',', ';');
            var  ranks       = strRank.Split(',', ';');
            int  i           = 0;

            foreach (var name in names)
            {
                var info = new ToxikkPlayerInfo();
                info.Team = !isTeamGame ? "Player" : teamSepIdx < 0 || strNames.IndexOf(name) < teamSepIdx ? "Red" : "Blue";
                if (i < steamIds.Length)
                {
                    info.SteamId = steamIds[i];
                }

                decimal sc;
                if (i < skills.Length && decimal.TryParse(skills[i], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out sc))
                {
                    info.SkillClass = sc;
                }
                if (i < ranks.Length && ranks[i].Length > 0)
                {
                    int rank;
                    if (!char.IsDigit(ranks[i][0]))
                    {
                        var teamInfo = ranks[i][0];
                        if (teamInfo == 29 || teamInfo == 'S')
                        {
                            info.Team = "Spec";
                        }
                        else if (teamInfo == 30 || teamInfo == 'Q')
                        {
                            info.Team = "Queue";
                        }
                        int.TryParse(ranks[i].Substring(1), out rank);
                    }
                    else
                    {
                        int.TryParse(ranks[i], out rank);
                    }
                    info.Rank = rank;
                }
                newPlayerInfos.Add(name, info);
                ++i;
            }
            this.playerInfos = newPlayerInfos;
            server.PlayerCount.Update();
        }
Exemplo n.º 2
0
        private void UpdatePlayerInfos(ServerRow server)
        {
            // no need for update if it's the same server and update timestamp
              if (server == this.serverForPlayerInfos && server.RequestTimestamp == this.dataTimestamp && playerInfos.Count > 0)
            return;

              this.serverForPlayerInfos = server;
              this.dataTimestamp = server.RequestTimestamp;
              this.playerInfos.Clear();

              var strNames = (server.GetRule("p1073741832") ?? "") + (server.GetRule("p1073741833") ?? "") + (server.GetRule("p1073741834") ?? "");
              if (string.IsNullOrEmpty(strNames))
            return;
              var gameType = (string)server.GetExtenderCellValue("_gametype");
              bool isTeamGame = gameType != "BL";
              var strSteamIds = (server.GetRule("p1073741829") ?? "") + (server.GetRule("p1073741830") ?? "") + (server.GetRule("p1073741831") ?? "");
              var strSkill = server.GetRule("p1073741837") ?? "";
              var strRank = server.GetRule("p1073741838") ?? "";
              int teamSepIdx = strNames.IndexOf(';');
              var names = strNames.Split(',', ';');
              var steamIds = strSteamIds.Split(',', ';');
              var skills = strSkill.Split(',',';');
              var ranks = strRank.Split(',', ';');
              int i = 0;
              foreach (var name in names)
              {
            var info = new ToxikkPlayerInfo();
            info.Team = !isTeamGame ? "Player" : teamSepIdx < 0 || strNames.IndexOf(name) < teamSepIdx ? "Red" : "Blue";
            if (i < steamIds.Length)
              info.SteamId = steamIds[i];

            decimal sc;
            if (i < skills.Length && decimal.TryParse(skills[i], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out sc))
              info.SkillClass = sc;
            int rank;
            if (i < ranks.Length && int.TryParse(ranks[i], out rank))
              info.Rank = rank;
            this.playerInfos.Add(name, info);
            ++i;
              }
        }