public void Init() { _mainFlowCoordinator = Resources.FindObjectsOfTypeAll <MainFlowCoordinator>().FirstOrDefault(); _mainFlowCoordinator.GetPrivateField <MainMenuViewController>("_mainMenuViewController").didFinishEvent += SongListTweaks_didFinishEvent; _difficultyViewController = Resources.FindObjectsOfTypeAll <BeatmapDifficultyViewController>().FirstOrDefault(); _difficultyViewController.didSelectDifficultyEvent += DifficultyViewControllerDidSelectDifficultyEvent; YouTubeDownloader.Instance.downloadProgress += VideoDownloaderDownloadProgress; songPreviewPlayer = Resources.FindObjectsOfTypeAll <SongPreviewPlayer>().First(); }
public MockPartyViewController() { _partyFlowCoordinator = Resources.FindObjectsOfTypeAll <PartyFreePlayFlowCoordinator>().FirstOrDefault(); LevelListViewController level = ReflectionUtil.GetPrivateField <LevelListViewController>(_partyFlowCoordinator, "_levelListViewController"); detail = ReflectionUtil.GetPrivateField <StandardLevelDetailViewController>(_partyFlowCoordinator, "_levelDetailViewController"); BeatmapDifficultyViewController beatmap = ReflectionUtil.GetPrivateField <BeatmapDifficultyViewController>(_partyFlowCoordinator, "_beatmapDifficultyViewController"); _gameplaySetupViewController = ReflectionUtil.GetPrivateField <GameplaySetupViewController>(_partyFlowCoordinator, "_gameplaySetupViewController"); level.didActivateEvent += (first, type) => { if (Data.Steam.SteamAPI.GetConnectionState() != SteamAPI.ConnectionState.CONNECTED || !_partyFlowCoordinator || !_partyFlowCoordinator.isActivated) { return; } _partyFlowCoordinator.InvokePrivateMethod("SetRightScreenViewController", new object[] { MultiplayerLobby.Instance.rightViewController, true }); }; level.didSelectLevelEvent += didSelectLevel; beatmap.didSelectDifficultyEvent += didSelectBeatmap; mPlay = BeatSaberUI.CreateUIButton(detail.rectTransform, "CreditsButton", new Vector2(0f, -24f), new Vector2(40, 9f)); mPlay.SetButtonText("Play with Lobby"); mPlay.SetButtonTextSize(5f); mPlay.gameObject.SetActive(false); mPlay.ToggleWordWrapping(false); mPlay.onClick.AddListener(didSelectPlay); _mainMenuController = Resources.FindObjectsOfTypeAll <MainMenuViewController>().FirstOrDefault(); Button partyButton = ReflectionUtil.GetPrivateField <Button>(_mainMenuController, "_partyButton"); HoverHint hint = Resources.FindObjectsOfTypeAll <HoverHint>().Where(x => x.text == "Play with your friends locally!").First(); _mainMenuController.didActivateEvent += (first, type) => { if (Data.Steam.SteamAPI.GetConnectionState() != SteamAPI.ConnectionState.CONNECTED) { partyButton.SetButtonText("Party"); if (hint) { hint.text = "Play with your friends locally!"; } } else { partyButton.SetButtonText("Online Lobby"); if (hint) { hint.text = "Play with your friends in your steam lobby!"; } } }; }
private void didSelectBeatmap(BeatmapDifficultyViewController controller, IDifficultyBeatmap beatmap) { Logger.Debug($"beatmap {beatmap.difficulty} selected"); if (!_partyFlowCoordinator || !_partyFlowCoordinator.isActivated) { toggleButtons(true); return; } toggleButtons(false); SteamAPI.SetDifficulty((byte)beatmap.difficulty); }
private void SceneManagerOnActiveSceneChanged(Scene oldScene, Scene newScene) { UI.BasicUI.ReadPrefs(); CurrentScore = 0; maxPossibleScore = 0; currentMaxPossibleScore = 0; gameScene = false; if (newScene.name == "MenuCore") { if (standardLevelDetailView == null) { standardLevelDetailView = Resources.FindObjectsOfTypeAll <StandardLevelDetailViewController>().FirstOrDefault(); } if (standardLevelDetailView != null) { standardLevelDetailView.didPressPlayButtonEvent += StandardLevelDetailView_didPressPlayButtonEvent; } if (DifficultyViewController == null) { DifficultyViewController = Resources.FindObjectsOfTypeAll <BeatmapDifficultyViewController>().FirstOrDefault(); } if (DifficultyViewController != null) { DifficultyViewController.didSelectDifficultyEvent += DifficultyViewController_didSelectDifficultyEvent; } if (PlayerName == "") { PlayerName = BS_Utils.Gameplay.GetUserInfo.GetUserName(); } } if (newScene.name == "GameCore") { gameScene = true; if (UI.BasicUI.enabled && !BS_Utils.Gameplay.Gamemode.IsIsolatedLevel) { levelSceneSetupDataSO = BS_Utils.Plugin.LevelData; if (levelSceneSetupDataSO != null) { maxPossibleScore = ScoreController.MaxRawScoreForNumberOfNotes(levelSceneSetupDataSO.GameplayCoreSceneSetupData.difficultyBeatmap.beatmapData.notesCount); } scoreController = Resources.FindObjectsOfTypeAll <ScoreController>().FirstOrDefault(); if (scoreController != null) { scoreController.scoreDidChangeEvent += ScoreController_scoreDidChangeEvent; } CreateBoard(); SharedCoroutineStarter.instance.StartCoroutine(UpdateBoardFixed()); } } }
private void _difficultyViewController_didSelectDifficultyEvent(BeatmapDifficultyViewController sender, IDifficultyBeatmap beatmap) { _favoriteButton.SetButtonIcon(PluginConfig.favoriteSongs.Any(x => x.Contains(beatmap.level.levelID)) ? Base64Sprites.RemoveFromFavorites : Base64Sprites.AddToFavorites); _deleteButton.interactable = !PluginConfig.disableDeleteButton && (beatmap.level.levelID.Length >= 32); if (beatmap.level.levelID.Length >= 32) { ScrappedSong song = ScrappedData.Songs.FirstOrDefault(x => x.Hash == beatmap.level.levelID.Substring(0, 32)); if (song.Diffs.Any(x => x.Diff == beatmap.difficulty.ToString())) { _starStatText.text = (song == null ? "--" : song.Diffs.First(x => x.Diff == beatmap.difficulty.ToString()).Stars.ToString()); } } else { _starStatText.text = "--"; } }
private void SetupTweaks() { YouTubeDownloader.Instance.downloadProgress += VideoDownloaderDownloadProgress; _videoFlowCoordinator = gameObject.AddComponent <VideoFlowCoordinator>(); _videoFlowCoordinator.finished += VideoFlowCoordinatorFinished; _videoFlowCoordinator.Init(); _difficultyViewController = Resources.FindObjectsOfTypeAll <BeatmapDifficultyViewController>().FirstOrDefault(); _difficultyViewController.didSelectDifficultyEvent += DifficultyViewControllerDidSelectDifficultyEvent; var _detailViewController = Resources.FindObjectsOfTypeAll <StandardLevelDetailViewController>().First(x => x.name == "StandardLevelDetailViewController"); RectTransform buttonsRect = _detailViewController.GetComponentsInChildren <RectTransform>().First(x => x.name == "Buttons"); var _playbutton = buttonsRect.GetComponentsInChildren <Button>().First(x => x.name == "PlayButton"); var _practiceButton = buttonsRect.GetComponentsInChildren <Button>().First(x => x.name == "PracticeButton"); _videoButton = Instantiate(_practiceButton, buttonsRect.parent); _videoButton.name = "VideoButton"; _videoButton.SetButtonIcon(Base64Sprites.PlayIcon); (_videoButton.transform as RectTransform).anchoredPosition = new Vector2(46, -6); (_videoButton.transform as RectTransform).sizeDelta = new Vector2(8, 8); _videoButton.onClick.AddListener(delegate() { _videoFlowCoordinator.Present(); }); _videoButtonHint = BeatSaberUI.AddHintText(_videoButton.transform as RectTransform, "Download a video"); var glow = _playbutton.GetComponentsInChildren <RectTransform>().First(x => x.name == "GlowContainer"); var videoWrapper = _videoButton.GetComponentsInChildren <RectTransform>().First(x => x.name == "Wrapper"); _videoButtonGlow = Instantiate(glow.gameObject, videoWrapper).gameObject.GetComponentInChildren <Image>(); var hlg = _videoButton.GetComponentsInChildren <HorizontalLayoutGroup>().First(x => x.name == "Content"); hlg.padding = new RectOffset(3, 2, 2, 2); _progressCircle = videoWrapper.GetComponentsInChildren <Image>().First(x => x.name == "Stroke"); _progressCircle.type = Image.Type.Filled; _progressCircle.fillMethod = Image.FillMethod.Radial360; _progressCircle.fillAmount = 1f; }
public void SceneManagerOnActiveSceneChanged(Scene arg0, Scene scene) { if (isMenuScene(scene)) { try { flowCoordinator = Resources.FindObjectsOfTypeAll <MainFlowCoordinator>().FirstOrDefault(); mainMenuViewController = flowCoordinator.GetPrivateField <MainMenuViewController>("_mainMenuViewController"); //soloModeSelectionViewController = flowCoordinator.GetPrivateField<SoloModeSelectionViewController>("_soloFreePlayFlowCoordinator"); soloFreePlayFlowCoordinator = flowCoordinator.GetPrivateField <SoloFreePlayFlowCoordinator>("_soloFreePlayFlowCoordinator"); detailViewController = soloFreePlayFlowCoordinator.GetPrivateField <StandardLevelDetailViewController>("_levelDetailViewController"); gameplaySetupViewController = soloFreePlayFlowCoordinator.GetPrivateField <GameplaySetupViewController>("_gameplaySetupViewController"); practiceController = soloFreePlayFlowCoordinator.GetPrivateField <PracticeViewController>("_practiceViewController"); beatmapDifficultyViewController = soloFreePlayFlowCoordinator.GetPrivateField <BeatmapDifficultyViewController>("_beatmapDifficultyViewControllerViewController"); listViewController = soloFreePlayFlowCoordinator.GetPrivateField <LevelListViewController>("_levelListViewController"); levelListView = listViewController.GetPrivateField <LevelListTableView>("_levelListTableView"); tableView = levelListView.GetPrivateField <TableView>("_tableView"); gameScenesManager = Resources.FindObjectsOfTypeAll <GameScenesManager>().FirstOrDefault(); standardLevelReturnToMenu = Resources.FindObjectsOfTypeAll <StandardLevelReturnToMenuController>().FirstOrDefault(); } catch (Exception e) { Console.WriteLine(e); } } if (isGameScene(scene)) { if (autoPlay) { } } Console.WriteLine(scene.name); }
private void SetupTweaks() { if (initialized || PluginConfig.disableSongListTweaks) { return; } Logger.Log("Setting up song list tweaks..."); _playlistsFlowCoordinator = (new GameObject("PlaylistsFlowCoordinator")).AddComponent <PlaylistsFlowCoordinator>(); _playlistsFlowCoordinator.didFinishEvent += _playlistsFlowCoordinator_didFinishEvent; _beatmapCharacteristics = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSO>(); _lastCharacteristic = _beatmapCharacteristics.First(x => x.characteristicName == "Standard"); Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSelectionViewController>().First().didSelectBeatmapCharacteristicEvent += (BeatmapCharacteristicSelectionViewController sender, BeatmapCharacteristicSO selected) => { _lastCharacteristic = selected; }; if (SongLoader.AreSongsLoaded) { _levelCollection = SongLoader.CustomLevelCollectionSO; } else { SongLoader.SongsLoadedEvent += (SongLoader sender, List <CustomLevel> levels) => { _levelCollection = SongLoader.CustomLevelCollectionSO; }; } _mainFlowCoordinator = Resources.FindObjectsOfTypeAll <MainFlowCoordinator>().FirstOrDefault(); _mainFlowCoordinator.GetPrivateField <MainMenuViewController>("_mainMenuViewController").didFinishEvent += SongListTweaks_didFinishEvent; _simpleDialog = ReflectionUtil.GetPrivateField <SimpleDialogPromptViewController>(_mainFlowCoordinator, "_simpleDialogPromptViewController"); _simpleDialog = Instantiate(_simpleDialog.gameObject, _simpleDialog.transform.parent).GetComponent <SimpleDialogPromptViewController>(); _difficultyViewController = Resources.FindObjectsOfTypeAll <BeatmapDifficultyViewController>().FirstOrDefault(); _difficultyViewController.didSelectDifficultyEvent += _difficultyViewController_didSelectDifficultyEvent; _levelListViewController = Resources.FindObjectsOfTypeAll <LevelListViewController>().FirstOrDefault(); _levelListViewController.didSelectLevelEvent += _levelListViewController_didSelectLevelEvent;; RectTransform _tableViewRectTransform = _levelListViewController.GetComponentsInChildren <RectTransform>().First(x => x.name == "TableViewContainer"); _tableViewRectTransform.sizeDelta = new Vector2(0f, -20f); _tableViewRectTransform.anchoredPosition = new Vector2(0f, -2.5f); RectTransform _pageUp = _tableViewRectTransform.GetComponentsInChildren <RectTransform>(true).First(x => x.name == "PageUpButton"); _pageUp.anchoredPosition = new Vector2(0f, -1f); RectTransform _pageDown = _tableViewRectTransform.GetComponentsInChildren <RectTransform>(true).First(x => x.name == "PageDownButton"); _pageDown.anchoredPosition = new Vector2(0f, 1f); _searchButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(-20f, 36.25f), new Vector2(20f, 6f), SearchPressed, "Search"); _searchButton.SetButtonTextSize(3f); _searchButton.ToggleWordWrapping(false); _sortByButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(0f, 36.25f), new Vector2(20f, 6f), () => { SelectTopButtons(TopButtonsState.SortBy); }, "Sort By"); _sortByButton.SetButtonTextSize(3f); _sortByButton.ToggleWordWrapping(false); _playlistsButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(20f, 36.25f), new Vector2(20f, 6f), PlaylistsButtonPressed, "Playlists"); _playlistsButton.SetButtonTextSize(3f); _playlistsButton.ToggleWordWrapping(false); _defButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(-20f, 36.25f), new Vector2(20f, 6f), () => { SelectTopButtons(TopButtonsState.Select); SetLevels(_lastCharacteristic, SortMode.Default, ""); }, "Default"); _defButton.SetButtonTextSize(3f); _defButton.ToggleWordWrapping(false); _defButton.gameObject.SetActive(false); _newButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(0f, 36.25f), new Vector2(20f, 6f), () => { SelectTopButtons(TopButtonsState.Select); SetLevels(_lastCharacteristic, SortMode.Newest, ""); }, "Newest"); _newButton.SetButtonTextSize(3f); _newButton.ToggleWordWrapping(false); _newButton.gameObject.SetActive(false); _authorButton = _levelListViewController.CreateUIButton("CreditsButton", new Vector2(20f, 36.25f), new Vector2(20f, 6f), () => { SelectTopButtons(TopButtonsState.Select); SetLevels(_lastCharacteristic, SortMode.Difficulty, ""); }, "Difficulty"); _authorButton.SetButtonTextSize(3f); _authorButton.ToggleWordWrapping(false); _authorButton.gameObject.SetActive(false); _detailViewController = Resources.FindObjectsOfTypeAll <StandardLevelDetailViewController>().First(x => x.name == "StandardLevelDetailViewController"); RectTransform buttonsRect = _detailViewController.GetComponentsInChildren <RectTransform>().First(x => x.name == "Buttons"); buttonsRect.anchoredPosition = new Vector2(0f, 10.75f); RectTransform customButtonsRect = Instantiate(buttonsRect, buttonsRect.parent, true); Destroy(customButtonsRect.GetComponent <ContentSizeFitter>()); Destroy(customButtonsRect.GetComponent <HorizontalLayoutGroup>()); customButtonsRect.name = "CustomUIButtonsHolder"; customButtonsRect.anchoredPosition = new Vector2(0f, 1.25f); _favoriteButton = customButtonsRect.GetComponentsInChildren <Button>().First(x => x.name == "PracticeButton"); _favoriteButton.SetButtonIcon(Base64Sprites.AddToFavorites); _favoriteButton.onClick.AddListener(() => { if (PluginConfig.favoriteSongs.Any(x => x.Contains(_detailViewController.difficultyBeatmap.level.levelID))) { PluginConfig.favoriteSongs.Remove(_detailViewController.difficultyBeatmap.level.levelID); PluginConfig.SaveConfig(); _favoriteButton.SetButtonIcon(Base64Sprites.AddToFavorites); PlaylistsCollection.RemoveLevelFromPlaylist(PlaylistsCollection.loadedPlaylists.First(x => x.playlistTitle == "Your favorite songs"), _detailViewController.difficultyBeatmap.level.levelID); } else { PluginConfig.favoriteSongs.Add(_detailViewController.difficultyBeatmap.level.levelID); PluginConfig.SaveConfig(); _favoriteButton.SetButtonIcon(Base64Sprites.RemoveFromFavorites); PlaylistsCollection.AddSongToPlaylist(PlaylistsCollection.loadedPlaylists.First(x => x.playlistTitle == "Your favorite songs"), new PlaylistSong() { levelId = _detailViewController.difficultyBeatmap.level.levelID, songName = _detailViewController.difficultyBeatmap.level.songName, level = SongDownloader.GetLevel(_detailViewController.difficultyBeatmap.level.levelID) }); } }); _deleteButton = customButtonsRect.GetComponentsInChildren <Button>().First(x => x.name == "PlayButton"); _deleteButton.SetButtonText("Delete"); _deleteButton.ToggleWordWrapping(false); _deleteButton.onClick.AddListener(DeletePressed); _deleteButton.GetComponentsInChildren <RectTransform>().First(x => x.name == "GlowContainer").gameObject.SetActive(false); _deleteButton.interactable = !PluginConfig.disableDeleteButton; //based on https://github.com/halsafar/BeatSaberSongBrowser/blob/master/SongBrowserPlugin/UI/Browser/SongBrowserUI.cs#L192 var statsPanel = _detailViewController.GetComponentsInChildren <CanvasRenderer>(true).First(x => x.name == "LevelParamsPanel"); var statTransforms = statsPanel.GetComponentsInChildren <RectTransform>(); var valueTexts = statsPanel.GetComponentsInChildren <TextMeshProUGUI>().Where(x => x.name == "ValueText").ToList(); foreach (RectTransform r in statTransforms) { if (r.name == "Separator") { continue; } r.sizeDelta = new Vector2(r.sizeDelta.x * 0.85f, r.sizeDelta.y * 0.85f); } var _starStatTransform = Instantiate(statTransforms[1], statsPanel.transform, false); _starStatText = _starStatTransform.GetComponentInChildren <TextMeshProUGUI>(); _starStatTransform.GetComponentInChildren <UnityEngine.UI.Image>().sprite = Base64Sprites.StarFull; _starStatText.text = "--"; initialized = true; }
private void DifficultyViewControllerDidSelectDifficultyEvent(BeatmapDifficultyViewController sender, IDifficultyBeatmap beatmap) { selectedLevel = beatmap.level; UpdateVideoButton(VideoLoader.Instance.GetVideo(selectedLevel)); }
private void DifficultyViewController_didSelectDifficultyEvent(BeatmapDifficultyViewController arg1, IDifficultyBeatmap arg2) { playerScores.Clear(); }
public void DifficultyViewControllerDidSelectDifficultyEvent(BeatmapDifficultyViewController sender, IDifficultyBeatmap beatmap) { selectedLevel = beatmap.level; selectedLevelVideo = VideoLoader.Instance.GetVideo(selectedLevel); ScreenManager.Instance.PrepareVideo(selectedLevelVideo); }