internal void GetPage(int currentPage) { if (!_loading) { Console.WriteLine($"Getting page {currentPage}"); try { _loading = true; _multiplayerServerList._pageUpButton.interactable = false; _multiplayerServerList._pageDownButton.interactable = false; _serverHubConnection = new TcpClient(Config.Instance.ServerHubIP, Config.Instance.ServerHubPort); ClientDataPacket packet = new ClientDataPacket() { ConnectionType = ConnectionType.Client, Offset = _multiplayerServerList._currentPage }; _serverHubConnection.GetStream().Write(packet.ToBytes(), 0, packet.ToBytes().Length); StartCoroutine(WaitForResponse()); Console.WriteLine("Waiting for response..."); } catch (Exception e) { Console.WriteLine($"Exception: {e}"); _loading = false; TextMeshProUGUI _errorText = ui.CreateText(rectTransform, "Can't connect to ServerHub!", new Vector2(0f, -48f)); _errorText.alignment = TextAlignmentOptions.Center; Destroy(_errorText.gameObject, 4f); } } }
private IEnumerator RequestPage(int page) { Connect(); yield return(new WaitForSecondsRealtime(0.05f)); ClientDataPacket packet = new ClientDataPacket() { ConnectionType = ConnectionType.Client, Offset = page }; serverHubConnection.GetStream().Write(packet.ToBytes(), 0, packet.ToBytes().Length); yield return(WaitForDoneProcess(15f)); if (serverHubConnection.Available <= 0) { try { serverHubConnection.Close(); ServerHubException.Invoke(this, new Exception("ServerHub is offline")); } catch (Exception e) { Console.WriteLine($"ServerHub Exception: {e}"); ServerHubException.Invoke(this, e); } yield break; } byte[] bytes = new byte[Packet.MAX_BYTE_LENGTH]; packet = null; if (serverHubConnection.GetStream().Read(bytes, 0, bytes.Length) != 0) { packet = Packet.ToClientDataPacket(bytes); } Disconnect(); ReceivedOnePage.Invoke(packet.Servers, page); }