//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// On activation /// </summary> /// <param name="p_FirstActivation">Is the first activation ?</param> /// <param name="p_AddedToHierarchy">Activation type</param> /// <param name="p_ScreenSystemEnabling">Is screen system enabled</param> protected override void DidActivate(bool p_FirstActivation, bool p_AddedToHierarchy, bool p_ScreenSystemEnabling) { /// Forward event base.DidActivate(p_FirstActivation, p_AddedToHierarchy, p_ScreenSystemEnabling); if (p_FirstActivation) { /// Scale down up & down button m_SongUpButton.transform.localScale = Vector3.one * 0.6f; m_SongDownButton.transform.localScale = Vector3.one * 0.6f; /// Create type selector m_TypeSegmentControl = Utils.GameUI.CreateTextSegmentedControl(m_TypeSegmentPanel.transform as RectTransform, false); m_TypeSegmentControl.SetTexts(new string[] { "Requests", "History", "Blacklist" }); m_TypeSegmentControl.ReloadData(); m_TypeSegmentControl.didSelectCellEvent += OnQueueTypeChanged; /// Prepare song list var l_BSMLTableView = m_SongListView.GetComponentInChildren <BSMLTableView>(); l_BSMLTableView.SetDataSource(null, false); GameObject.DestroyImmediate(m_SongListView.GetComponentInChildren <CustomListTableData>()); m_SongList = l_BSMLTableView.gameObject.AddComponent <SongListDataSource>(); m_SongList.TableViewInstance = l_BSMLTableView; l_BSMLTableView.SetDataSource(m_SongList, false); /// Bind events m_SongUpButton.onClick.AddListener(OnSongPageUpPressed); m_SongList.TableViewInstance.didSelectCellWithIdxEvent += OnSongSelected; m_SongDownButton.onClick.AddListener(OnSongPageDownPressed); /// Find song preview object m_SongPreviewPlayer = Resources.FindObjectsOfTypeAll <SongPreviewPlayer>().First(); /// Show song info panel m_SongInfo_Detail = new BeatSaberPlus.UI.Widget.SongDetail(m_SongInfoPanel.transform); UnselectSong(); m_SongInfo_Detail.SetFavoriteToggleEnabled(true); m_SongInfo_Detail.SetFavoriteToggleImage("BeatSaberPlus.Plugins.ChatRequest.Resources.Blacklist.png", "BeatSaberPlus.Plugins.ChatRequest.Resources.Unblacklist.png"); m_SongInfo_Detail.SetFavoriteToggleHoverHint("Add/Remove to blacklist"); m_SongInfo_Detail.SetFavoriteToggleCallback(OnBlacklistButtonPressed); m_SongInfo_Detail.SetPracticeButtonEnabled(true); m_SongInfo_Detail.SetPracticeButtonText("Skip"); m_SongInfo_Detail.SetPracticeButtonAction(SkipSong); m_SongInfo_Detail.SetPlayButtonText("Play"); m_SongInfo_Detail.SetPlayButtonEnabled(true); m_SongInfo_Detail.SetPlayButtonAction(PlaySong); /// Init loading modal m_LoadingModalSpinner = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <LoadingControl>().First(), m_LoadingModal.transform); m_LoadingModalSpinner.transform.SetAsLastSibling(); Destroy(m_LoadingModalSpinner.GetComponent <Touchable>()); /// Force change to tab Request OnQueueTypeChanged(null, 0); } /// Go back to request tab if (!p_FirstActivation && m_TypeSegmentControl.selectedCellNumber != 0) { m_TypeSegmentControl.SelectCellWithNumber(0); OnQueueTypeChanged(null, 0); } else { RebuildSongList(true); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// On activation /// </summary> /// <param name="p_FirstActivation">Is the first activation ?</param> /// <param name="p_AddedToHierarchy">Activation type</param> /// <param name="p_ScreenSystemEnabling">Is screen system enabled</param> protected override void DidActivate(bool p_FirstActivation, bool p_AddedToHierarchy, bool p_ScreenSystemEnabling) { /// Forward event base.DidActivate(p_FirstActivation, p_AddedToHierarchy, p_ScreenSystemEnabling); if (p_FirstActivation) { m_SongsProvider = Plugins.ChatRequest.ChatRequest.Instance.SongHistory; /// Scale down up & down button m_SongUpButton.transform.localScale = Vector3.one * 0.6f; m_SongDownButton.transform.localScale = Vector3.one * 0.6f; /// Create type selector m_TypeSegmentControl = Utils.GameUI.CreateTextSegmentedControl(m_TypeSegmentPanel.transform as RectTransform, false); m_TypeSegmentControl.SetTexts(new string[] { "Playlist Generator", "Playlist" }); m_TypeSegmentControl.ReloadData(); m_TypeSegmentControl.didSelectCellEvent += OnTabChanged; /// Bind events m_SongUpButton.onClick.AddListener(OnSongPageUpPressed); m_SongList.tableView.didSelectCellWithIdxEvent += OnSongSelected; m_SongDownButton.onClick.AddListener(OnSongPageDownPressed); /// Find song preview object m_SongPreviewPlayer = Resources.FindObjectsOfTypeAll <SongPreviewPlayer>().First(); /// Show song info panel m_SongInfo_Detail = new BeatSaberPlus.UI.Widget.SongDetail(m_SongInfoPanel.transform); UnselectSong(); m_SongInfo_Detail.SetPlayButtonText("Play"); m_SongInfo_Detail.SetPlayButtonEnabled(true); m_SongInfo_Detail.SetPlayButtonAction(PlaySong); m_SongInfo_Detail.OnActiveDifficultyChanged += (x) => { /// Hide if no data if (x == null) { BeatSaberPlus.UI.ViewFlowCoordinator.Instance.SetRightScreen(null); } /// Show score board var l_ScoreBoard = Resources.FindObjectsOfTypeAll <PlatformLeaderboardViewController>().FirstOrDefault(); if (l_ScoreBoard != null) { if (!l_ScoreBoard.isInViewControllerHierarchy) { BeatSaberPlus.UI.ViewFlowCoordinator.Instance.SetRightScreen(l_ScoreBoard); } l_ScoreBoard.SetData(x); } }; /// Init loading modal m_LoadingModalSpinner = GameObject.Instantiate(Resources.FindObjectsOfTypeAll <LoadingControl>().First(), m_LoadingModal.transform); m_LoadingModalSpinner.transform.SetAsLastSibling(); Destroy(m_LoadingModalSpinner.GetComponent <Touchable>()); /// Force change to tab Request OnTabChanged(null, 0); } }