public void GetRooms() { try { NetworkClient.Start(); Plugin.log.Debug($"Creating message..."); NetOutgoingMessage outMsg = NetworkClient.CreateMessage(); Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; byte[] version = new byte[4] { (byte)assemblyVersion.Major, (byte)assemblyVersion.Minor, (byte)assemblyVersion.Build, (byte)assemblyVersion.Revision }; outMsg.Write(version); new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()).AddToMessage(outMsg); Plugin.log.Debug($"Connecting to {channelInfos[0].ip}:{channelInfos[0].port}..."); NetworkClient.Connect(channelInfos[0].ip, channelInfos[0].port, outMsg); } catch (Exception e) { ChannelException?.Invoke(this, e); Abort(); } }
public void Connect(string IP, int Port) { ip = IP; port = Port; NetworkClient.Start(); Misc.Logger.Info($"Creating message..."); NetOutgoingMessage outMsg = NetworkClient.CreateMessage(); Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; byte[] version = new byte[4] { (byte)assemblyVersion.Major, (byte)assemblyVersion.Minor, (byte)assemblyVersion.Build, (byte)assemblyVersion.Revision }; outMsg.Write(version); playerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); playerInfo.AddToMessage(outMsg); Misc.Logger.Info($"Connecting to {ip}:{port} with player name \"{playerInfo.playerName}\" and ID {playerInfo.playerId}"); InRadioMode = false; InRoom = false; NetworkClient.Connect(ip, port, outMsg); }
public void GetRooms() { try { Task.Run(() => { NetworkClient.Start(); Plugin.log.Info($"Creating message..."); NetOutgoingMessage outMsg = NetworkClient.CreateMessage(); Version assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; byte[] version = new byte[4] { (byte)assemblyVersion.Major, (byte)assemblyVersion.Minor, (byte)assemblyVersion.Build, (byte)assemblyVersion.Revision }; outMsg.Write(version); new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()).AddToMessage(outMsg); Plugin.log.Info($"Connecting to {ip}:{port}..."); NetworkClient.Connect(ip, port, outMsg); }).ConfigureAwait(false); } catch (Exception e) { ServerHubException?.Invoke(this, e); Abort(); } }
public void OnLevelChange() { GetUserInfo.UpdateUserInfo(); if (_connection.Connected) { if (_loadedlevel > 2) { StartCoroutine(WaitForControllers()); try { localPlayerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); SendString(JsonUtility.ToJson(new ClientCommand(ClientCommandType.SetPlayerInfo, JsonUtility.ToJson(localPlayerInfo)))); DataReceived += ReceivedFromServer; StartCoroutine(ReceiveFromServerCoroutine()); try { scoreScreen = new GameObject("ScoreScreen"); scoreScreen.transform.position = new Vector3(0f, 4f, 12f); scoreScreen.transform.rotation = Quaternion.Euler(0f, 0f, 0f); scoreDisplays.Clear(); for (int i = 0; i < 5; i++) { PlayerInfoDisplay buffer = new GameObject("ScoreDisplay").AddComponent <PlayerInfoDisplay>(); buffer.transform.SetParent(scoreScreen.transform); buffer.transform.localPosition = new Vector3(0f, 2.5f - i, 0); scoreDisplays.Add(buffer); } } catch (Exception e) { Console.WriteLine("SCREEN EXCEPTION: " + e); } } catch (Exception e) { Console.WriteLine("Can't connect to the server! Exception: " + e); } } else if (_loadedlevel <= 1) { DataReceived -= ReceivedFromServer; DisconnectFromServer(); StartCoroutine(WaitForResults()); } } }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { base.DidActivate(firstActivation, activationType); if (firstActivation) { _roomName = $"{GetUserInfo.GetUserName()}'s room".ToUpper(); _roomPassword = ""; } _createRoomButton.interactable = PluginUI.instance.roomCreationFlowCoordinator.CheckRequirements(); parserParams.EmitEvent("cancel"); }
public void Awake() { instance = this; DontDestroyOnLoad(this); GetUserInfo.UpdateUserInfo(); playerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); NetPeerConfiguration Config = new NetPeerConfiguration("BeatSaberMultiplayer") { MaximumHandshakeAttempts = 2, AutoFlushSendQueue = false }; NetworkClient = new NetClient(Config); ClientCreated?.Invoke(); }
private void OnMenuSceneLoadedFresh() { try { PluginUI.SetupLevelDetailClone(); Settings.SetupSettings(); SongCore.Loader.SongsLoadedEvent += Loader_SongsLoadedEvent; GetUserInfo.GetUserName(); } catch (Exception e) { Plugin.log.Critical("Exception on fresh menu scene change: " + e); } }
private void OnMenuSceneLoadedFresh() { try { PluginUI.Instance.OnLoad(); VotingUI.Instance.OnLoad(); SongListTweaks.Instance.OnLoad(); GetUserInfo.GetUserName(); } catch (Exception e) { Logger.Exception("Exception on fresh menu scene change: " + e); } }
public void Connect(string IP, int Port) { ip = IP; port = Port; NetworkClient.Start(); Misc.Logger.Info($"Creating message..."); NetOutgoingMessage outMsg = NetworkClient.CreateMessage(); outMsg.Write(Plugin.pluginVersion); playerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); playerInfo.AddToMessage(outMsg); Misc.Logger.Info($"Connecting to {ip}:{port}..."); NetworkClient.Connect(ip, port, outMsg); }
public void Awake() { instance = this; DontDestroyOnLoad(this); GetUserInfo.UpdateUserInfo(); playerInfo = new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()); NetPeerConfiguration Config = new NetPeerConfiguration("BeatSaberMultiplayer") { MaximumHandshakeAttempts = 2, AutoFlushSendQueue = false }; NetworkClient = new NetClient(Config); #if DEBUG #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed WritePackets(); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed #endif }
public void GetRooms() { try { NetworkClient.Start(); Misc.Logger.Info($"Creating message..."); NetOutgoingMessage outMsg = NetworkClient.CreateMessage(); outMsg.Write(Plugin.pluginVersion); new PlayerInfo(GetUserInfo.GetUserName(), GetUserInfo.GetUserID()).AddToMessage(outMsg); Misc.Logger.Info($"Connecting to {channelInfos[0].ip}:{channelInfos[0].port}..."); NetworkClient.Connect(channelInfos[0].ip, channelInfos[0].port, outMsg); } catch (Exception e) { ChannelException?.Invoke(this, e); Abort(); } }
internal static void ShowContributors() { Dictionary <string, string> contributors = new Dictionary <string, string>(ContributorsAndDonators.Contributors); string user = GetUserInfo.GetUserName(); if (user == null) { user = "******"; } if (contributors.ContainsKey(user)) { contributors.Add($"{user}, again!", "For enjoying this mod!"); } else { contributors.Add(user, "For enjoying this mod!"); //Teehee :) } ClearScreen(); TextMeshProUGUI contributorLabel; contributorLabel = BeatSaberUI.CreateText(rect, "Thanks to these contributors for, directly or indirectly, helping make Counters+ what it is!", Vector2.zero); contributorLabel.fontSize = 3; contributorLabel.alignment = TextAlignmentOptions.Center; SetPositioning(contributorLabel.rectTransform, 0, 0.85f, 1, 0.166f, 0.5f); LoadedElements.Add(contributorLabel.gameObject); foreach (var kvp in contributors) { TextMeshProUGUI contributor = BeatSaberUI.CreateText(rect, $"<color=#00c0ff>{kvp.Key}</color> | {kvp.Value}", Vector2.zero); contributor.fontSize = 3; contributor.alignment = TextAlignmentOptions.Left; SetPositioning(contributor.rectTransform, 0.05f, 0.8f - (contributors.Keys.ToList().IndexOf(kvp.Key) * 0.05f), 1, 0.166f, 0.5f); LoadedElements.Add(contributor.gameObject); } }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation) { _backButton = BeatSaberUI.CreateBackButton(rectTransform); _backButton.onClick.AddListener(delegate() { didFinishEvent?.Invoke(); }); _nameKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _nameKeyboard.enterButtonPressed += NameEntered; _nameKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_nameKeyboard); }; _passwordKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _passwordKeyboard.allowEmptyInput = true; _passwordKeyboard.enterButtonPressed += PasswordEntered; _passwordKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_passwordKeyboard); }; _presetNameKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _presetNameKeyboard.enterButtonPressed += PresetNameEntered; _presetNameKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_presetNameKeyboard); }; _usePasswordToggle = CustomSettingsHelper.AddToggleSetting <OnOffViewController>(rectTransform, "Use Password", new Vector2(0f, 11f)); _usePasswordToggle.ValueChanged += UsePasswordToggle_ValueChanged; _usePasswordToggle.Value = _usePassword; _songSelectionList = CustomSettingsHelper.AddListSetting <MultiplayerListViewController>(rectTransform, "Song Selection", new Vector2(0f, 3f)); _songSelectionList.ValueChanged += SongSelection_ValueChanged; _songSelectionList.maxValue = 1; _songSelectionList.Value = (int)_songSelectionType; _songSelectionList.textForValues = new string[] { "Manual", "Random" }; _songSelectionList.UpdateText(); _maxPlayersList = CustomSettingsHelper.AddListSetting <MultiplayerListViewController>(rectTransform, "Max Players", new Vector2(0f, -5f)); _maxPlayersList.ValueChanged += MaxPlayers_ValueChanged; _maxPlayersList.Value = _maxPlayers; _maxPlayersList.maxValue = 16; _maxPlayersList.textForValues = new string[] { "No limit" }; _maxPlayersList.UpdateText(); _resultsShowTimeList = CustomSettingsHelper.AddListSetting <MultiplayerListViewController>(rectTransform, "Results Show Time", new Vector2(0f, -13f)); _resultsShowTimeList.ValueChanged += ResultsShowTime_ValueChanged; _resultsShowTimeList.minValue = 5; _resultsShowTimeList.maxValue = 45; _resultsShowTimeList.Value = _resultsShowTime; _perPlayerDifficultyToggle = CustomSettingsHelper.AddToggleSetting <OnOffViewController>(rectTransform, "Per player difficulty", new Vector2(0f, -21f)); _perPlayerDifficultyToggle.ValueChanged += PerPlayerDifficultyToggle_ValueChanged; _perPlayerDifficultyToggle.Value = _allowPerPlayerDifficulty; _roomName = $"{GetUserInfo.GetUserName()}'s room".ToUpper(); _nameText = BeatSaberUI.CreateText(rectTransform, _roomName, new Vector2(-22.5f, 30f)); _nameText.fontSize = 5f; _editNameButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); _editNameButton.SetButtonText("EDIT NAME"); (_editNameButton.transform as RectTransform).sizeDelta = new Vector2(34f, 8f); (_editNameButton.transform as RectTransform).anchoredPosition = new Vector2(34f, 32f); _editNameButton.onClick.RemoveAllListeners(); _editNameButton.onClick.AddListener(delegate() { _nameKeyboard.inputString = _roomName; presentKeyboardEvent?.Invoke(_nameKeyboard); }); _roomPassword = ""; _passwordText = BeatSaberUI.CreateText(rectTransform, "ENTER PASSWORD", new Vector2(-22.5f, 20f)); _passwordText.fontSize = 5f; _editPasswordButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); _editPasswordButton.SetButtonText("EDIT PASS"); (_editPasswordButton.transform as RectTransform).sizeDelta = new Vector2(34f, 8f); (_editPasswordButton.transform as RectTransform).anchoredPosition = new Vector2(34f, 22f); _editPasswordButton.onClick.RemoveAllListeners(); _editPasswordButton.onClick.AddListener(delegate() { _passwordKeyboard.inputString = _roomPassword; presentKeyboardEvent?.Invoke(_passwordKeyboard); }); _createRoomButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); _createRoomButton.SetButtonText("Create Room"); (_createRoomButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_createRoomButton.transform as RectTransform).anchoredPosition = new Vector2(0f, -32.5f); _createRoomButton.onClick.RemoveAllListeners(); _createRoomButton.onClick.AddListener(delegate() { CreatedRoom?.Invoke(new RoomSettings() { Name = _roomName, UsePassword = _usePassword, Password = _roomPassword, PerPlayerDifficulty = _allowPerPlayerDifficulty, MaxPlayers = _maxPlayers, SelectionType = _songSelectionType, ResultsShowTime = _resultsShowTime }); }); _createRoomButton.interactable = PluginUI.instance.roomCreationFlowCoordinator.CheckRequirements(); _savePresetButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); _savePresetButton.SetButtonText("Save Preset"); (_savePresetButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_savePresetButton.transform as RectTransform).anchoredPosition = new Vector2(-32f, -32.5f); _savePresetButton.onClick.RemoveAllListeners(); _savePresetButton.onClick.AddListener(delegate() { _presetNameKeyboard.inputString = "NEW PRESET"; presentKeyboardEvent?.Invoke(_presetNameKeyboard); }); _loadPresetButton = BeatSaberUI.CreateUIButton(rectTransform, "CancelButton"); _loadPresetButton.SetButtonText("Load Preset"); (_loadPresetButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_loadPresetButton.transform as RectTransform).anchoredPosition = new Vector2(32f, -32.5f); _loadPresetButton.onClick.RemoveAllListeners(); _loadPresetButton.onClick.AddListener(delegate() { LoadPresetPressed?.Invoke(); }); } else { _songSelectionList.textForValues = new string[] { "Manual", "Random" }; _songSelectionList.UpdateText(); _maxPlayersList.textForValues = new string[] { "No limit" }; _maxPlayersList.UpdateText(); _createRoomButton.interactable = PluginUI.instance.roomCreationFlowCoordinator.CheckRequirements(); } }
public string GetUserName() { return(GetUserInfo.GetUserName()); }
private void CreateOnlineButton() { _newVersionText = BeatSaberUI.CreateText(_mainMenuRectTransform, "A new version of the mod\nis available!", new Vector2(55.5f, 33f)); _newVersionText.fontSize = 5f; _newVersionText.lineSpacing = -52; _newVersionText.gameObject.SetActive(false); Button[] mainButtons = Resources.FindObjectsOfTypeAll <RectTransform>().First(x => x.name == "MainButtons" && x.parent.name == "MainMenuViewController").GetComponentsInChildren <Button>(); foreach (var item in mainButtons) { (item.transform as RectTransform).sizeDelta = new Vector2(35f, 30f); } _multiplayerButton = BeatSaberUI.CreateUIButton(_mainMenuRectTransform, "SoloFreePlayButton"); Destroy(_multiplayerButton.GetComponentInChildren <LocalizedTextMeshProUGUI>()); Destroy(_multiplayerButton.GetComponentInChildren <HoverHint>()); _multiplayerButton.transform.SetParent(mainButtons.First(x => x.name == "SoloFreePlayButton").transform.parent); _multiplayerButton.transform.SetAsLastSibling(); _multiplayerButton.SetButtonText("Online"); _multiplayerButton.SetButtonIcon(Sprites.onlineIcon); BeatSaberUI.AddHintText(_multiplayerButton.transform as RectTransform, "Play with your friends online!"); _multiplayerButton.onClick.AddListener(delegate() { try { MainFlowCoordinator mainFlow = Resources.FindObjectsOfTypeAll <MainFlowCoordinator>().First(); if (_noUserInfoWarning == null) { var dialogOrig = ReflectionUtil.GetPrivateField <SimpleDialogPromptViewController>(mainFlow, "_simpleDialogPromptViewController"); _noUserInfoWarning = Instantiate(dialogOrig.gameObject).GetComponent <SimpleDialogPromptViewController>(); } if (GetUserInfo.GetUserID() == 0 && string.IsNullOrWhiteSpace(GetUserInfo.GetUserName()) || GetUserInfo.GetUserID() == 0) { _noUserInfoWarning.Init("Invalid username and ID", $"Your username and ID are invalid\nMake sure you are logged in", "Go back", "Continue anyway", (selectedButton) => { mainFlow.InvokeMethod("DismissViewController", _noUserInfoWarning, null, selectedButton == 1); if (selectedButton == 1) { mainFlow.InvokeMethod("PresentFlowCoordinator", modeSelectionFlowCoordinator, null, true, false); } }); mainFlow.InvokeMethod("PresentViewController", _noUserInfoWarning, null, false); } else { mainFlow.InvokeMethod("PresentFlowCoordinator", modeSelectionFlowCoordinator, null, false, false); } } catch (Exception e) { Plugin.log.Critical($"Unable to present flow coordinator! Exception: {e}"); } }); }
public IEnumerator PostReview(float funFactor, float rhythm, float flow, float patternQuality, float readability, float levelQuality) { yield return(null); BeastSaberReview review = new BeastSaberReview(GetUserInfo.GetUserName(), funFactor, rhythm, flow, patternQuality, readability, levelQuality); _reviewViewController.SetSubmitButtonState(true, false); _reviewViewController.SetStatusText(false, ""); UnityWebRequest voteWWW = new UnityWebRequest($"https://bsaber.com/wp-json/bsaber-api/songs/{songkey}/reviews"); voteWWW.method = "POST"; voteWWW.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonUtility.ToJson(review))); voteWWW.downloadHandler = new DownloadHandlerBuffer(); voteWWW.SetRequestHeader("Content-Type", "application/json"); voteWWW.timeout = 30; yield return(voteWWW.SendWebRequest()); if (voteWWW.isNetworkError) { Misc.Logger.Error(voteWWW.error); _reviewViewController.SetSubmitButtonState(true, true); _reviewViewController.SetStatusText(false, ""); } else { switch (voteWWW.responseCode) { case 200: { JSONNode node = JSON.Parse(voteWWW.downloadHandler.text); if (node["success"]) { Misc.Logger.Log("Success!"); if (!PluginConfig.reviewedSongs.ContainsKey(levelId.Substring(0, 32))) { PluginConfig.reviewedSongs.Add(levelId.Substring(0, 32), new SongReview(songkey, funFactor, rhythm, flow, patternQuality, readability, levelQuality)); PluginConfig.SaveConfig(); } else { PluginConfig.reviewedSongs[levelId.Substring(0, 32)] = new SongReview(songkey, funFactor, rhythm, flow, patternQuality, readability, levelQuality); PluginConfig.SaveConfig(); } _reviewViewController.SetSubmitButtonState(false, false); _reviewViewController.SetStatusText(true, "<color=green>Success!"); } else { Misc.Logger.Error("Something went wrong...\n Response: " + voteWWW.downloadHandler.text); _reviewViewController.SetSubmitButtonState(true, true); _reviewViewController.SetStatusText(false, ""); } }; break; default: { Misc.Logger.Error("Error: " + voteWWW.responseCode + "\nResponse: " + voteWWW.downloadHandler.text); _reviewViewController.SetSubmitButtonState(true, true); _reviewViewController.SetStatusText(false, ""); }; break; } } }
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(bool firstActivation, ActivationType activationType) { if (firstActivation && activationType == ActivationType.AddedToHierarchy) { _backButton = BeatSaberUI.CreateBackButton(rectTransform); _backButton.onClick.AddListener(delegate() { didFinishEvent?.Invoke(); }); _nameKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _nameKeyboard.enterButtonPressed += NameEntered; _nameKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_nameKeyboard); }; _passwordKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _passwordKeyboard.enterButtonPressed += PasswordEntered; _passwordKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_passwordKeyboard); }; _presetNameKeyboard = BeatSaberUI.CreateViewController <CustomKeyboardViewController>(); _presetNameKeyboard.enterButtonPressed += PresetNameEntered; _presetNameKeyboard.backButtonPressed += () => { keyboardDidFinishEvent?.Invoke(_presetNameKeyboard); }; _usePasswordToggle = CustomSettingsHelper.AddToggleSetting <OnOffViewController>(rectTransform, "Use Password"); (_usePasswordToggle.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_usePasswordToggle.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_usePasswordToggle.transform as RectTransform).anchoredPosition = new Vector2(0f, 10f); _usePasswordToggle.ValueChanged += UsePasswordToggle_ValueChanged; _usePasswordToggle.Value = _usePassword; _songSelectionList = CustomSettingsHelper.AddListSetting <MultiplayerListViewController>(rectTransform, "Song Selection"); (_songSelectionList.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_songSelectionList.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_songSelectionList.transform as RectTransform).anchoredPosition = new Vector2(0f, 0f); _songSelectionList.ValueChanged += SongSelection_ValueChanged; _songSelectionList.maxValue = 2; _songSelectionList.Value = (int)_songSelectionType; _songSelectionList.textForValues = new string[] { "Manual", "Random", "Voting" }; _songSelectionList.UpdateText(); _maxPlayersList = CustomSettingsHelper.AddListSetting <MultiplayerListViewController>(rectTransform, "Max Players"); (_maxPlayersList.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_maxPlayersList.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_maxPlayersList.transform as RectTransform).anchoredPosition = new Vector2(0f, -10f); _maxPlayersList.ValueChanged += MaxPlayers_ValueChanged; _maxPlayersList.Value = _maxPlayers; _maxPlayersList.maxValue = 16; _noFailToggle = CustomSettingsHelper.AddToggleSetting <OnOffViewController>(rectTransform, "No Fail Mode"); (_noFailToggle.transform as RectTransform).anchorMin = new Vector2(0.5f, 0.5f); (_noFailToggle.transform as RectTransform).anchorMax = new Vector2(0.5f, 0.5f); (_noFailToggle.transform as RectTransform).anchoredPosition = new Vector2(0f, -20f); _noFailToggle.ValueChanged += NoFailToggle_ValueChanged; _noFailToggle.Value = _noFailMode; _roomName = $"{GetUserInfo.GetUserName()}'s room".ToUpper(); _nameText = BeatSaberUI.CreateText(rectTransform, _roomName, new Vector2(-22.5f, 25f)); _nameText.fontSize = 5f; _editNameButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton"); _editNameButton.SetButtonText("EDIT NAME"); (_editNameButton.transform as RectTransform).sizeDelta = new Vector2(34f, 8f); (_editNameButton.transform as RectTransform).anchoredPosition = new Vector2(34f, 25f); _editNameButton.onClick.RemoveAllListeners(); _editNameButton.onClick.AddListener(delegate() { _nameKeyboard.inputString = _roomName; PluginUI.instance.roomCreationFlowCoordinator.PresentKeyboard(_nameKeyboard); }); _roomPassword = ""; _passwordText = BeatSaberUI.CreateText(rectTransform, "ENTER PASSWORD", new Vector2(-22.5f, 15f)); _passwordText.fontSize = 5f; _editPasswordButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton"); _editPasswordButton.SetButtonText("EDIT PASS"); (_editPasswordButton.transform as RectTransform).sizeDelta = new Vector2(34f, 8f); (_editPasswordButton.transform as RectTransform).anchoredPosition = new Vector2(34f, 15f); _editPasswordButton.onClick.RemoveAllListeners(); _editPasswordButton.onClick.AddListener(delegate() { _passwordKeyboard.inputString = _roomPassword; PluginUI.instance.roomCreationFlowCoordinator.PresentKeyboard(_passwordKeyboard); }); _createRoomButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton"); _createRoomButton.SetButtonText("Create Room"); (_createRoomButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_createRoomButton.transform as RectTransform).anchoredPosition = new Vector2(0f, -32.5f); _createRoomButton.onClick.RemoveAllListeners(); _createRoomButton.onClick.AddListener(delegate() { CreatedRoom?.Invoke(new RoomSettings() { Name = _roomName, UsePassword = _usePassword, Password = _roomPassword, NoFail = _noFailMode, MaxPlayers = _maxPlayers, SelectionType = _songSelectionType }); }); _createRoomButton.interactable = PluginUI.instance.roomCreationFlowCoordinator.CheckRequirements(); _savePresetButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton"); _savePresetButton.SetButtonText("Save Preset"); (_savePresetButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_savePresetButton.transform as RectTransform).anchoredPosition = new Vector2(-32f, -32.5f); _savePresetButton.onClick.RemoveAllListeners(); _savePresetButton.onClick.AddListener(delegate() { _presetNameKeyboard.inputString = "NEW PRESET"; PluginUI.instance.roomCreationFlowCoordinator.PresentKeyboard(_presetNameKeyboard); }); _loadPresetButton = BeatSaberUI.CreateUIButton(rectTransform, "CreditsButton"); _loadPresetButton.SetButtonText("Load Preset"); (_loadPresetButton.transform as RectTransform).sizeDelta = new Vector2(30f, 10f); (_loadPresetButton.transform as RectTransform).anchoredPosition = new Vector2(32f, -32.5f); _loadPresetButton.onClick.RemoveAllListeners(); _loadPresetButton.onClick.AddListener(delegate() { LoadPresetPressed?.Invoke(); }); } else { _songSelectionList.textForValues = new string[] { "Manual", "Random", "Voting" }; _songSelectionList.UpdateText(); _createRoomButton.interactable = PluginUI.instance.roomCreationFlowCoordinator.CheckRequirements(); } }