Exemplo n.º 1
0
        public ListServerData FindServerWithMostPlayers()
        {
            ListServerData s = null;

            foreach (var p in ServerList)
            {
                if (s == null || p.Info.TotalPlayers > s.Info.TotalPlayers)
                {
                    s = p;
                }
            }
            return(s);
        }
Exemplo n.º 2
0
        private void Client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
        {
            LastError = string.Empty;
            LastToken = string.Empty;

            if (e.Error != null)
            {
                LastError = e.Error.ToString();
                if (RequestErrored != null)
                {
                    RequestErrored.Invoke(this, EventArgs.Empty);
                }

                return;
            }

            ServerList.Clear();

            try
            {
                foreach (string line in e.Result.Split("\r\n".ToCharArray()))
                {
                    if (line == string.Empty)
                    {
                        continue;
                    }

                    string[] cmdParts = line.Split(":".ToCharArray(), 2);
                    string   command  = cmdParts[0];
                    if (command == "TOKEN")
                    {
                        LastToken = cmdParts[1].Trim();
                    }
                    else if (command == "NOTOK")
                    {
                        LastError = "No Token " + cmdParts[1].Trim();
                    }
                    else if (command == "ERROR")
                    {
                        LastError = "ERROR " + cmdParts[1].Trim();
                    }
                    else if (command == "NOTICE")
                    {
                        LastError = "NOTICE " + cmdParts[1].Trim();
                    }
                    else
                    {
                        ListServerData data = new ListServerData();

                        string[] dataParts = line.Split(" ".ToCharArray(), 5);
                        data.Name    = dataParts[0];
                        data.Version = dataParts[1];
                        data.Info.ReadFromString(dataParts[2]);
                        IPAddress.TryParse(dataParts[3], out data.Address);

                        data.Host = dataParts[3];
                        data.Port = 5154;
                        if (dataParts[0].Contains(":"))
                        {
                            string[] portParts = dataParts[0].Split(":".ToCharArray(), 2);

                            data.Host = portParts[0];
                            int.TryParse(portParts[1], out data.Port);
                        }

                        if (dataParts.Length > 4)
                        {
                            data.Description = dataParts[4];
                        }

                        ServerList.Add(data);
                    }
                }
            }
            catch (System.Exception ex)
            {
                //LastToken = string.Empty;
                LastError = ex.ToString();
            }


            if (LastError != string.Empty)
            {
                if (RequestErrored != null)
                {
                    RequestErrored.Invoke(this, EventArgs.Empty);
                }
            }
            else
            {
                if (RequestCompleted != null)
                {
                    RequestCompleted.Invoke(this, EventArgs.Empty);
                }
            }
        }