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); } } }
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); } } } }
// 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"); } }