Пример #1
0
        private void Join_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Data.HostOrClient = false;
            Data.KeyForJoin   = KeyInput.Text;
            Data.JoinToServer = false;

            if (!Data.HostOrClient)
            {
                // Running client

                Client client      = new Client();
                Crypt  decrypt     = new Crypt();
                Get    getIpOrPort = new Get();


                // Lobby
                if (Data.JoinToServer)
                {
                    int tcpPort = 0;
                    Int32.TryParse(Data.webList[Data.LobbyNumber].Port, out tcpPort);
                    client.InitializeConnection(Data.webList[Data.LobbyNumber].IP, tcpPort);
                }
                // Local modul
                else
                {
                    string ipPort   = decrypt.decry(Data.KeyForJoin);
                    int    _tcpPort = 0;
                    Int32.TryParse(getIpOrPort.GetIpAndPort(ipPort, 1), out _tcpPort);
                    client.InitializeConnection(getIpOrPort.GetIpAndPort(ipPort, 0), _tcpPort);
                }
            }
        }
Пример #2
0
        private void JoinToLobby_Click(object sender, RoutedEventArgs e)
        {
            if (Data.LobbyStart != true)
            {
                Data.JoinToServer = true;
                Lobby path  = WebDataGrid.SelectedItem as Lobby;
                int   parse = WebDataGrid.SelectedIndex;



                Data.HostOrClient = false;
                Data.KeyForJoin   = KeyInput.Text;
                Data.LobbyNumber  = parse;

                if (!Data.HostOrClient)
                {
                    // Running ckient

                    Client _client      = new Client();
                    Crypt  _decrypt     = new Crypt();
                    Get    _getIpOrPort = new Get();


                    // Entry in the lobby list
                    if (Data.JoinToServer)
                    {
                        int _tcpPort = 0;
                        Int32.TryParse(Data.webList[parse].Port, out _tcpPort);
                        _client.InitializeConnection(Data.webList[parse].IP, _tcpPort);
                    }
                    // entry in the local modul
                    else
                    {
                        string _ipPort  = _decrypt.decry(Data.KeyForJoin);
                        int    _tcpPort = 0;
                        Int32.TryParse(_getIpOrPort.GetIpAndPort(_ipPort, 1), out _tcpPort);
                        _client.InitializeConnection(_getIpOrPort.GetIpAndPort(_ipPort, 0), _tcpPort);
                    }
                }
            }
        }
Пример #3
0
        // Get the lobby list and fill in the table
        public string GetLobbyList()
        {
            Set    printData    = new Set();
            string serveranswer = "";

            string[]     line;
            string[]     pars;
            int          numRoom       = 0;
            List <Lobby> LobbySortList = new List <Lobby>();

            try
            {
                // Send a request to the server
                serveranswer = SendToServer("cmd=get");


                if (serveranswer != null && serveranswer != "err" && serveranswer != "")
                {
                    int _lastCount = Data.webList.Count;
                    // Share the response by session
                    line = serveranswer.Split('&');
                    try
                    {
                        Data.Inf.Dispatcher.Invoke(new Action(delegate()
                        {
                            // Clear the list before filling it
                            LobbySortList.Clear();
                        }));
                    }
                    catch { return("err"); }

                    foreach (var part in line)
                    {
                        if (part != "" && part != null)
                        {
                            // In order not to count from zero, enter the counter from 1
                            numRoom++;

                            // Divide sessions by parameters
                            pars = part.Split('|');
                            Get getType = new Get();

                            // Use this function of receiving through the separator ":"
                            string type = getType.GetIpAndPort(pars[6], 0);
                            string mod  = getType.GetIpAndPort(pars[6], 1);

                            // Get a password or not, and IdTime
                            string _pass = getType.GetIpAndPort(pars[3], 0);
                            int    _id   = 0;
                            Int32.TryParse(getType.GetIpAndPort(pars[3], 1), out _id);

                            string openClose = getType.GetIpAndPort(pars[9], 0);

                            string comment = getType.GetIpAndPort(pars[9], 1);

                            int count = 0;
                            Int32.TryParse(pars[4], out count);

                            try
                            {
                                if (count > 0)
                                {
                                    Data.LobbyList.Dispatcher.Invoke(new Action(delegate()
                                    {
                                        LobbySortList.Add(new Lobby()
                                        {
                                            Name            = pars[0],
                                            Host            = LobbyPlayers(pars[5])[0],
                                            Players         = LobbyPlayers(pars[5]),
                                            Map             = pars[7],
                                            Type            = type,
                                            Password        = _pass,
                                            IdTime          = _id,
                                            ModOrigin       = mod,
                                            OpenCloseIngame = openClose,
                                            Comment         = comment,
                                            Score           = pars[8],
                                            IP       = pars[1],
                                            Port     = pars[2],
                                            Count    = GetMaxCountGamers(type, count),
                                            CountOne = pars[4]
                                        });
                                    }));
                                }
                            }

                            catch
                            {
                                return("err");
                            }
                        }
                        else
                        {
                            // Erases information
                            Set inf = new Set();
                            inf.SetInfo(0);
                        }
                    }

                    // Start sorting the list, the first sorting by creation date is always there
                    var sortedList = LobbySortList.OrderBy(x => x.IdTime).ToList();

                    Data.Inf.Dispatcher.Invoke(new Action(delegate()
                    {
                        // Build a list by numbers
                        for (int i = 0; i < sortedList.Count; i++)
                        {
                            sortedList[i].Number = i + 1;
                        }

                        // Before distillation into the table, I clean it
                        Data.webList.Clear();
                        if (!Data.SettingCh.St.Sort1 && !Data.SettingCh.St.Sort2 && !Data.SettingCh.St.Sort3 && !Data.SettingCh.St.Sort4)
                        {
                            for (int i = 0; i < sortedList.Count; i++)
                            {
                                Data.webList.Add(sortedList[i]);
                            }
                        }
                        else
                        if (Data.SettingCh.St.Sort1)
                        {
                            var sortedListMod = sortedList.OrderByDescending(x => x.OpenCloseIngame).ThenBy(x => x.Password).ThenBy(x => x.ModOrigin).ToList();
                            for (int i = 0; i < sortedList.Count; i++)
                            {
                                Data.webList.Add(sortedListMod[i]);
                            }
                        }
                        else
                        if (Data.SettingCh.St.Sort2)
                        {
                            var sortedListOrig = sortedList.OrderByDescending(x => x.OpenCloseIngame).ThenBy(x => x.Password).ThenByDescending(x => x.ModOrigin).ToList();
                            for (int i = 0; i < sortedList.Count; i++)
                            {
                                Data.webList.Add(sortedListOrig[i]);
                            }
                        }
                        else
                        if (Data.SettingCh.St.Sort3)
                        {
                            var sortedListMap = sortedList.OrderByDescending(x => x.OpenCloseIngame).ThenBy(x => x.Password).ThenBy(x => x.Map).ToList();
                            for (int i = 0; i < sortedList.Count; i++)
                            {
                                Data.webList.Add(sortedListMap[i]);
                            }
                        }
                        if (Data.SettingCh.St.Sort4)
                        {
                            var sortedListType = sortedList.OrderByDescending(x => x.OpenCloseIngame).ThenBy(x => x.Password).ThenBy(x => x.Type).ToList();
                            for (int i = 0; i < sortedList.Count; i++)
                            {
                                Data.webList.Add(sortedListType[i]);
                            }
                        }
                    }));

                    return("ok");
                }
                else
                {
                    Data.Inf.Dispatcher.Invoke(new Action(delegate()
                    {
                        // Clear the list
                        LobbySortList.Clear();
                        Data.webList.Clear();

                        // Erases information
                        Set inf = new Set();
                        if (serveranswer == null)
                        {
                            inf.SetSomeInfo("Server is not responding. Check if the server is specified correctly in the settings \r\n");
                        }
                        if (serveranswer == "")
                        {
                            inf.SetSomeInfo("No lobby found \r\n");
                        }
                        if (serveranswer == "err")
                        {
                            inf.SetSomeInfo("Server is not responding. Check if the server is specified correctly in the settings \r\n");
                        }
                    }));

                    return("ok");
                }
            }
            catch
            {
                if (Data.FollowToGetLobby)
                {
                    Data.Inf.Dispatcher.Invoke(new Action(delegate()
                    {
                        // Clear the list
                        LobbySortList.Clear();
                        Data.webList.Clear();

                        // Erases information
                        Set inf = new Set();
                        inf.SetInfo(0);

                        inf.SetSomeInfo("Server is not responding. Check if the server is specified correctly in the settings \r\n");
                    }));
                }

                return("err");
            }
        }