public TableCell CellForRow(int row) { SongListTableCell cell = Instantiate(_serverTableCellInstance); Destroy(cell.GetComponentsInChildren <UnityEngine.UI.Image>().First(x => x.name.ToLower().Contains("cover"))); cell.songName = availableServers[row].Name; cell.author = $"{availableServers[row].IPv4}:{availableServers[row].Port}"; return(cell); }
protected override void DidActivate() { _modMenuUi = FindObjectOfType <ModMenuUi>(); _parentViewController = transform.parent.GetComponent <ModMenuMasterViewController>(); try { _toggleSwitch = Resources.FindObjectsOfTypeAll <UnityEngine.UI.Toggle>().First(); ModMenuPlugin.debugLogger.Log(_toggleSwitch == null ? "Toggle switch null" : "Toggle switch not null!"); if (_pageDownButton == null) { _pageDownButton = _modMenuUi.CreateButton(rectTransform, "PageDownButton"); ((RectTransform)_pageDownButton.transform).anchorMin = new Vector2(0.5f, 0f); ((RectTransform)_pageDownButton.transform).anchorMax = new Vector2(0.5f, 0f); ((RectTransform)_pageDownButton.transform).anchoredPosition = new Vector2(0f, 10f); _pageDownButton.interactable = true; _pageDownButton.onClick.AddListener(delegate() { _modsTableView.PageScrollDown(); ModMenuPlugin.debugLogger.Log("Page down pressed"); }); } if (_pageUpButton == null) { _pageUpButton = _modMenuUi.CreateButton(rectTransform, "PageUpButton"); ((RectTransform)_pageUpButton.transform).anchorMin = new Vector2(0.5f, 1f); ((RectTransform)_pageUpButton.transform).anchorMax = new Vector2(0.5f, 1f); ((RectTransform)_pageUpButton.transform).anchoredPosition = new Vector2(0f, -10f); _pageUpButton.interactable = true; _pageUpButton.onClick.AddListener(delegate() { _modsTableView.PageScrollUp(); ModMenuPlugin.debugLogger.Log("Page up pressed"); }); } } catch (Exception ex) { ModMenuPlugin.debugLogger.Exception(ex.StackTrace + ex.Message); } _songListTableCellInstance = Resources.FindObjectsOfTypeAll <SongListTableCell>().First(x => (x.name == "SongListTableCell")); LoadMods(); base.DidActivate(); }
public TableCell CellForRow(int row) { SongListTableCell _tableCell = Instantiate(_songListTableCellInstance); (_tableCell.transform as RectTransform).anchorMin = new Vector2(0f, 1f); (_tableCell.transform as RectTransform).anchorMax = new Vector2(0f, 1f); (_tableCell.transform as RectTransform).sizeDelta = new Vector2(0f, 10f); _tableCell.songName = string.Format("{0}\n<size=80%>{1}</size>", HtmlDecode(_songs[row].songName), HtmlDecode(_songs[row].songSubName)); _tableCell.author = HtmlDecode(_songs[row].authorName); StartCoroutine(LoadSprite("https://beatsaver.com/img/" + _songs[row].id + "." + _songs[row].img, _tableCell)); bool alreadyDownloaded = IsSongAlreadyDownloaded(_songs[row]); if (alreadyDownloaded) { _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>()[0].color = Color.gray; _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>()[1].color = Color.gray; _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>()[2].color = Color.gray; } return(_tableCell); }
public TableCell CellForRow(int row) { SongListTableCell _tableCell = Instantiate(_songListTableCellInstance); _tableCell.songName = string.Format("{0}\n<size=80%>{1}</size>", HTML5Decode.HtmlDecode(_parentMasterViewController._songs[row].songName), HTML5Decode.HtmlDecode(_parentMasterViewController._songs[row].songSubName)); _tableCell.author = HTML5Decode.HtmlDecode(_parentMasterViewController._songs[row].authorName); StartCoroutine(_parentMasterViewController.LoadSprite("https://beatsaver.com/img/" + _parentMasterViewController._songs[row].id + "." + _parentMasterViewController._songs[row].img, _tableCell)); bool alreadyDownloaded = _parentMasterViewController.IsSongAlreadyDownloaded(_parentMasterViewController._songs[row]); if (alreadyDownloaded) { foreach (UnityEngine.UI.Image img in _tableCell.GetComponentsInChildren <UnityEngine.UI.Image>()) { img.color = new Color(1f, 1f, 1f, 0.2f); } foreach (TextMeshProUGUI text in _tableCell.GetComponentsInChildren <TextMeshProUGUI>()) { text.faceColor = new Color32(255, 255, 255, 50); } } return(_tableCell); }
protected override void DidActivate() { ui = BSMultiplayerUI._instance; _parentMasterViewController = transform.parent.GetComponent <MultiplayerServerHubViewController>(); _serverTableCellInstance = Resources.FindObjectsOfTypeAll <SongListTableCell>().First(x => (x.name == "SongListTableCell")); if (_pageUpButton == null) { _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "PageUpButton")), rectTransform, false); (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchoredPosition = new Vector2(0f, -14f); _pageUpButton.interactable = true; _pageUpButton.onClick.AddListener(delegate() { if (_currentPage > 0) { if (!_parentMasterViewController._loading) { _currentPage -= 1; _parentMasterViewController.GetPage(_currentPage); } } }); _pageUpButton.interactable = false; } if (_pageDownButton == null) { _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "PageDownButton")), rectTransform, false); (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchoredPosition = new Vector2(0f, 8f); _pageDownButton.interactable = true; _pageDownButton.onClick.AddListener(delegate() { if (!_parentMasterViewController._loading) { _currentPage += 1; Console.WriteLine("Page down"); _parentMasterViewController.GetPage(_currentPage); } }); _pageDownButton.interactable = false; } if (_serverTableView == null) { _serverTableView = new GameObject().AddComponent <TableView>(); _serverTableView.transform.SetParent(rectTransform, false); Mask viewportMask = Instantiate(Resources.FindObjectsOfTypeAll <Mask>().First(), _serverTableView.transform, false); viewportMask.transform.DetachChildren(); _serverTableView.GetComponentsInChildren <RectTransform>().First(x => x.name == "Content").transform.SetParent(viewportMask.rectTransform, false); (_serverTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0.5f); (_serverTableView.transform as RectTransform).anchorMax = new Vector2(1f, 0.5f); (_serverTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 60f); (_serverTableView.transform as RectTransform).position = new Vector3(0f, 0f, 2.4f); (_serverTableView.transform as RectTransform).anchoredPosition = new Vector3(0f, -3f); _serverTableView.DidSelectRowEvent += ServerTableView_DidSelectRow; _serverTableView.dataSource = this; } else { _serverTableView.ReloadData(); } }
protected override void DidActivate() { ui = BSMultiplayerUI._instance; _songLoader = FindObjectOfType <SongLoader>(); localPlayerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); if (_songPreviewPlayer == null) { ObjectProvider[] providers = Resources.FindObjectsOfTypeAll <ObjectProvider>().Where(x => x.name == "SongPreviewPlayerProvider").ToArray(); if (providers.Length > 0) { _songPreviewPlayer = providers[0].GetProvidedObject <SongPreviewPlayer>(); } } if (_backButton == null) { _backButton = ui.CreateBackButton(rectTransform); _backButton.onClick.AddListener(delegate() { BSMultiplayerClient._instance.DataReceived -= DataReceived; BSMultiplayerClient._instance.DisconnectFromServer(); _songPreviewPlayer.CrossfadeToDefault(); try { transform.parent.GetComponent <MultiplayerServerHubViewController>().UpdatePage(); } catch (Exception e) { Console.WriteLine($"ServerHub exception: {e}"); } foreach (AvatarController avatar in _avatars) { Destroy(avatar.gameObject); } DismissModalViewController(null, false); }); } if (_timerText == null) { _timerText = ui.CreateText(rectTransform, "", new Vector2(0f, -5f)); _timerText.fontSize = 8f; _timerText.alignment = TextAlignmentOptions.Center; _timerText.rectTransform.sizeDelta = new Vector2(20f, 6f); } if (_selectText == null) { _selectText = ui.CreateText(rectTransform, "", new Vector2(0f, -36f)); _selectText.fontSize = 7f; _selectText.alignment = TextAlignmentOptions.Center; _selectText.rectTransform.sizeDelta = new Vector2(120f, 6f); } if (_loadingIndicator == null) { try { _loadingIndicator = ui.CreateLoadingIndicator(rectTransform); (_loadingIndicator.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchoredPosition = new Vector2(0f, 0f); _loadingIndicator.SetActive(true); } catch (Exception e) { Console.WriteLine("EXCEPTION: " + e); } } if (_selectedSongCell == null) { _selectedSongCell = Instantiate(Resources.FindObjectsOfTypeAll <SongListTableCell>().First(x => x.name == "SongListTableCell"), rectTransform, false); (_selectedSongCell.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchoredPosition = new Vector2(-25f, 0); _selectedSongCell.gameObject.SetActive(false); } else { _selectedSongCell.gameObject.SetActive(false); } if (_multiplayerLeaderboard == null) { _multiplayerLeaderboard = ui.CreateViewController <MultiplayerLeaderboardViewController>(); _multiplayerLeaderboard.rectTransform.anchorMin = new Vector2(0.3f, 0f); _multiplayerLeaderboard.rectTransform.anchorMax = new Vector2(0.7f, 1f); PushViewController(_multiplayerLeaderboard, true); } else { if (_viewControllers.IndexOf(_multiplayerLeaderboard) < 0) { PushViewController(_multiplayerLeaderboard, true); } } Console.WriteLine($"Connecting to {selectedServerIP}:{selectedServerPort}"); if (BSMultiplayerClient._instance.ConnectToServer(selectedServerIP, selectedServerPort)) { BSMultiplayerClient._instance.SendString(JsonUtility.ToJson(new ClientCommand(ClientCommandType.GetServerState))); BSMultiplayerClient._instance.SendString(JsonUtility.ToJson(new ClientCommand(ClientCommandType.GetAvailableSongs))); StartCoroutine(BSMultiplayerClient._instance.ReceiveFromServerCoroutine()); BSMultiplayerClient._instance.DataReceived += DataReceived; } else { _loading = false; TextMeshProUGUI _errorText = ui.CreateText(rectTransform, String.Format("Can't connect to server!"), new Vector2(0f, -48f)); _errorText.alignment = TextAlignmentOptions.Center; Destroy(_errorText.gameObject, 5f); } }
protected override void DidActivate() { Debug.Log("Activated!"); ui = FindObjectOfType <CustomUI>(); _songLoader = FindObjectOfType <SongLoader>(); UpdateAlreadyDownloadedSongs(); try { _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().Where(x => (x.name == "PageUpButton")).First(), rectTransform, false); (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchoredPosition = new Vector2(0f, -10f); _pageUpButton.interactable = true; _pageUpButton.onClick.AddListener(delegate() { if (_currentPage > 0) { if (!_loading) { _loading = true; _loadingText.text = "Loading..."; _selectedRow = -1; _downloadButton.gameObject.SetActive(false); StartCoroutine(GetSongs(_currentPage - 1)); } } }); _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().Where(x => (x.name == "PageDownButton")).First(), rectTransform, false); (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchoredPosition = new Vector2(0f, 10f); _pageDownButton.interactable = true; _pageDownButton.onClick.AddListener(delegate() { if (!_loading) { _loading = true; _loadingText.text = "Loading..."; _selectedRow = -1; _downloadButton.gameObject.SetActive(false); StartCoroutine(GetSongs(_currentPage + 1)); } }); _songListTableCellInstance = Resources.FindObjectsOfTypeAll <SongListTableCell>().Where(x => (x.name == "SongListTableCell")).First(); } catch (Exception e) { Debug.Log("EXCEPTION IN DidActivate: " + e); } Button _backButton = ui.CreateBackButton(rectTransform); _backButton.onClick.AddListener(delegate() { try { _songLoader.RefreshSongs(); }catch (Exception e) { Debug.Log("Can't refresh songs!"); } DismissModalViewController(null, false); }); _downloadButton = ui.CreateUIButton(rectTransform); (_downloadButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f); (_downloadButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f); (_downloadButton.transform as RectTransform).anchoredPosition = new Vector2(-66f, -50f); (_downloadButton.transform as RectTransform).sizeDelta = new Vector2(32f, 10f); ui.SetButtonText(ref _downloadButton, "Download"); ui.SetButtonIcon(ref _downloadButton, CustomUI.icons.Where(x => x.name == "PlayIcon").First()); _downloadButton.onClick.AddListener(delegate() { if (_selectedRow != -1 && !_loading) { DownloadSong(_selectedRow); } }); _downloadButton.gameObject.SetActive(false); _loadingText = ui.CreateText(rectTransform, "Loading songs from BeatSaver...", new Vector2(-34f, -32f)); StartCoroutine(GetSongs(0)); base.DidActivate(); }
protected override void DidActivate() { ui = BeatSaverUI._instance; _parentMasterViewController = transform.parent.GetComponent <BeatSaverMasterViewController>(); try { if (_pageUpButton == null) { _pageUpButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "PageUpButton")), rectTransform, false); (_pageUpButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 1f); (_pageUpButton.transform as RectTransform).anchoredPosition = new Vector2(0f, -14f); _pageUpButton.interactable = true; _pageUpButton.onClick.AddListener(delegate() { if (_currentPage > 0) { if (!_parentMasterViewController._loading) { _parentMasterViewController._loading = true; _currentPage -= 1; _parentMasterViewController.GetPage(_currentPage); } } }); } if (_pageDownButton == null) { _pageDownButton = Instantiate(Resources.FindObjectsOfTypeAll <Button>().First(x => (x.name == "PageDownButton")), rectTransform, false); (_pageDownButton.transform as RectTransform).anchorMin = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchorMax = new Vector2(0.5f, 0f); (_pageDownButton.transform as RectTransform).anchoredPosition = new Vector2(0f, 8f); _pageDownButton.interactable = true; _pageDownButton.onClick.AddListener(delegate() { if (!_parentMasterViewController._loading) { _parentMasterViewController._loading = true; _currentPage += 1; _parentMasterViewController.GetPage(_currentPage); } }); } if (_sortByButton == null) { _sortByButton = ui.CreateUIButton(rectTransform, "ApplyButton"); ui.SetButtonText(ref _sortByButton, "Sort by"); ui.SetButtonTextSize(ref _sortByButton, 3f); (_sortByButton.transform as RectTransform).sizeDelta = new Vector2(30f, 6f); (_sortByButton.transform as RectTransform).anchoredPosition = new Vector2(0f, 73f); _sortByButton.onClick.RemoveAllListeners(); _sortByButton.onClick.AddListener(delegate() { SelectTopButtons(TopButtonsState.SortBy); }); } if (_sortByText == null) { _sortByText = ui.CreateText(rectTransform, "SORT BY", new Vector2(-36f, -4.75f)); _sortByText.fontSize = 3.5f; _sortByText.rectTransform.sizeDelta = new Vector2(10f, 6f); _sortByText.gameObject.SetActive(false); } if (_topButton == null) { _topButton = ui.CreateUIButton(rectTransform, "ApplyButton"); ui.SetButtonText(ref _topButton, "Downloads"); ui.SetButtonTextSize(ref _topButton, 3f); (_topButton.transform as RectTransform).sizeDelta = new Vector2(20f, 6f); (_topButton.transform as RectTransform).anchoredPosition = new Vector2(-30f, 73f); _topButton.onClick.RemoveAllListeners(); _topButton.onClick.AddListener(delegate() { if (!_parentMasterViewController._loading) { _parentMasterViewController._loading = true; _parentMasterViewController._sortBy = "top"; _currentPage = 0; _parentMasterViewController.ClearSearchInput(); _parentMasterViewController.GetPage(_currentPage); SelectTopButtons(TopButtonsState.Select); } }); _topButton.gameObject.SetActive(false); } if (_newButton == null) { _newButton = ui.CreateUIButton(rectTransform, "ApplyButton"); ui.SetButtonText(ref _newButton, "Upload Time"); ui.SetButtonTextSize(ref _newButton, 3f); (_newButton.transform as RectTransform).sizeDelta = new Vector2(20f, 6f); (_newButton.transform as RectTransform).anchoredPosition = new Vector2(-10f, 73f); _newButton.onClick.RemoveAllListeners(); _newButton.onClick.AddListener(delegate() { if (!_parentMasterViewController._loading) { _parentMasterViewController._loading = true; _parentMasterViewController._sortBy = "new"; _currentPage = 0; _parentMasterViewController.ClearSearchInput(); _parentMasterViewController.GetPage(_currentPage); SelectTopButtons(TopButtonsState.Select); } }); _newButton.gameObject.SetActive(false); } if (_starButton == null) { _starButton = ui.CreateUIButton(rectTransform, "ApplyButton"); ui.SetButtonText(ref _starButton, "Plays"); ui.SetButtonTextSize(ref _starButton, 3f); (_starButton.transform as RectTransform).sizeDelta = new Vector2(20f, 6f); (_starButton.transform as RectTransform).anchoredPosition = new Vector2(10f, 73f); _starButton.onClick.RemoveAllListeners(); _starButton.onClick.AddListener(delegate() { if (!_parentMasterViewController._loading) { _parentMasterViewController._sortBy = "plays"; _currentPage = 0; _parentMasterViewController.ClearSearchInput(); _parentMasterViewController.GetPage(_currentPage); SelectTopButtons(TopButtonsState.Select); } }); _starButton.gameObject.SetActive(false); } if (_searchButton == null) { _searchButton = ui.CreateUIButton(rectTransform, "ApplyButton"); ui.SetButtonText(ref _searchButton, "Search"); ui.SetButtonTextSize(ref _searchButton, 3f); (_searchButton.transform as RectTransform).sizeDelta = new Vector2(30f, 6f); (_searchButton.transform as RectTransform).anchoredPosition = new Vector2(-30f, 73f); _searchButton.onClick.RemoveAllListeners(); _searchButton.onClick.AddListener(delegate() { _parentMasterViewController.ShowSearchKeyboard(); SelectTopButtons(TopButtonsState.Search); _currentPage = 0; }); } if (_loadingIndicator == null) { try { _loadingIndicator = ui.CreateLoadingIndicator(rectTransform); (_loadingIndicator.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchoredPosition = new Vector2(0f, 0f); _loadingIndicator.SetActive(true); }catch (Exception e) { log.Exception("EXCEPTION: " + e); } } _songListTableCellInstance = Resources.FindObjectsOfTypeAll <SongListTableCell>().First(x => (x.name == "SongListTableCell")); if (_songsTableView == null) { _songsTableView = new GameObject().AddComponent <TableView>(); _songsTableView.transform.SetParent(rectTransform, false); _songsTableView.dataSource = this; (_songsTableView.transform as RectTransform).anchorMin = new Vector2(0f, 0.5f); (_songsTableView.transform as RectTransform).anchorMax = new Vector2(1f, 0.5f); (_songsTableView.transform as RectTransform).sizeDelta = new Vector2(0f, 60f); (_songsTableView.transform as RectTransform).position = new Vector3(0f, 0f, 2.4f); (_songsTableView.transform as RectTransform).anchoredPosition = new Vector3(0f, -3f); _songsTableView.DidSelectRowEvent += _songsTableView_DidSelectRowEvent; } else { _songsTableView.ReloadData(); } } catch (Exception e) { log.Exception("EXCEPTION IN DidActivate: " + e); } }
protected override void DidActivate() { ui = BSMultiplayerUI._instance; _songLoader = FindObjectOfType <SongLoader>(); if (_songPreviewPlayer == null) { ObjectProvider[] providers = Resources.FindObjectsOfTypeAll <ObjectProvider>().Where(x => x.name == "SongPreviewPlayerProvider").ToArray(); if (providers.Length > 0) { _songPreviewPlayer = providers[0].GetProvidedObject <SongPreviewPlayer>(); } } if (_backButton == null) { _backButton = ui.CreateBackButton(rectTransform); _backButton.onClick.AddListener(delegate() { BSMultiplayerMain._instance.DataReceived -= DataReceived; BSMultiplayerMain._instance.DisconnectFromServer(); DismissModalViewController(null, false); }); } if (_timerText == null) { _timerText = ui.CreateText(rectTransform, "", new Vector2(0f, -5f)); _timerText.fontSize = 8f; _timerText.alignment = TextAlignmentOptions.Center; _timerText.rectTransform.sizeDelta = new Vector2(20f, 6f); } if (_selectText == null) { _selectText = ui.CreateText(rectTransform, "", new Vector2(0f, -36f)); _selectText.fontSize = 7f; _selectText.alignment = TextAlignmentOptions.Center; _selectText.rectTransform.sizeDelta = new Vector2(40f, 6f); } if (_loadingIndicator == null) { try { _loadingIndicator = ui.CreateLoadingIndicator(rectTransform); (_loadingIndicator.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_loadingIndicator.transform as RectTransform).anchoredPosition = new Vector2(0f, 0f); _loadingIndicator.SetActive(true); } catch (Exception e) { Console.WriteLine("EXCEPTION: " + e); } } if (_selectedSongCell == null) { _selectedSongCell = Instantiate(Resources.FindObjectsOfTypeAll <SongListTableCell>().First(x => x.name == "SongListTableCell"), rectTransform, false); (_selectedSongCell.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_selectedSongCell.transform as RectTransform).anchoredPosition = new Vector2(-25f, 0); _selectedSongCell.gameObject.SetActive(false); } else { _selectedSongCell.gameObject.SetActive(false); } if (BSMultiplayerMain._instance.ConnectToServer()) { BSMultiplayerMain._instance.SendString(JsonUtility.ToJson(new ClientCommand(ClientCommandType.GetServerState))); BSMultiplayerMain._instance.SendString(JsonUtility.ToJson(new ClientCommand(ClientCommandType.GetAvailableSongs))); StartCoroutine(BSMultiplayerMain._instance.ReceiveFromServerCoroutine()); BSMultiplayerMain._instance.DataReceived += DataReceived; } else { _loading = false; TextMeshProUGUI _errorText = ui.CreateText(rectTransform, String.Format("Can't connect to server!"), new Vector2(0f, -48f)); _errorText.alignment = TextAlignmentOptions.Center; Destroy(_errorText.gameObject, 5f); } }