protected override void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling)
        {
            if (firstActivation)
            {
                SetTitle("Qualifier Room", ViewController.AnimationType.None);
                showBackButton = true;

                _playerDataModel             = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
                _menuLightsManager           = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First();
                _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First();
                _campaignFlowCoordinator     = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First();
                _resultsViewController       = Resources.FindObjectsOfTypeAll <ResultsViewController>().First();
                _scoreLights   = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsClearedLightsPreset");
                _redLights     = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsFailedLightsPreset");
                _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset");

                _songSelection = BeatSaberUI.CreateViewController <SongSelection>();
                _songSelection.SongSelected += songSelection_SongSelected;

                _songDetail              = BeatSaberUI.CreateViewController <SongDetail>();
                _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent;
                _songDetail.DisableCharacteristicControl = true;
                _songDetail.DisableDifficultyControl     = true;
                _songDetail.DisablePlayButton            = false;
            }
            if (addedToHierarchy)
            {
                _songSelection.SetSongs(Event.QualifierMaps.ToList());
                ProvideInitialViewControllers(_songSelection);
            }
        }
Пример #2
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     base.OnNavigatedTo(e);
     if (e.NavigationMode == NavigationMode.New || songDetail == null)
     {
         songId           = Convert.ToInt32(e.Parameter);
         songDetail       = new SongDetail(songId);
         this.DataContext = songDetail;
         songDetail.LoadMusicDeatil();
         //id.Text = e.Parameter.ToString();
     }
 }
Пример #3
0
        protected override void DidActivate(bool firstActivation, ActivationType activationType)
        {
            if (firstActivation)
            {
                //Set up UI
                title          = "Room Screen";
                showBackButton = true;

                _playerDataModel             = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First();
                _menuLightsManager           = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First();
                _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First();
                _campaignFlowCoordinator     = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First();
                _resultsViewController       = Resources.FindObjectsOfTypeAll <ResultsViewController>().First();
                _scoreLights   = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsLightsPreset");
                _redLights     = _campaignFlowCoordinator.GetField <MenuLightsPresetSO>("_newObjectiveLightsPreset");
                _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset");

                _songSelection = BeatSaberUI.CreateViewController <SongSelection>();
                _songSelection.SongSelected += songSelection_SongSelected;

                _splashScreen = BeatSaberUI.CreateViewController <SplashScreen>();

                _songDetail              = BeatSaberUI.CreateViewController <SongDetail>();
                _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent;
                _songDetail.DifficultyBeatmapChanged += songDetail_didChangeDifficultyBeatmapEvent;

                _playerList = BeatSaberUI.CreateViewController <PlayerList>();
            }
            if (activationType == ActivationType.AddedToHierarchy)
            {
                tournamentMode = Match == null;
                if (tournamentMode)
                {
                    _splashScreen.StatusText = $"Connecting to \"{Host.Name}\"...";
                    ProvideInitialViewControllers(_splashScreen);
                }
                else
                {
                    //If we're not in tournament mode, then a client connection has already been made
                    //by the room selection screen, so we can just assume Plugin.client isn't null
                    //NOTE: This is *such* a hack. Oh my god.
                    isHost = Match.Leader == Plugin.client.Self;
                    _songSelection.SetSongs(SongUtils.masterLevelList);
                    _playerList.Players      = Match.Players;
                    _splashScreen.StatusText = "Waiting for the host to select a song...";

                    if (isHost)
                    {
                        ProvideInitialViewControllers(_songSelection, _playerList);
                    }
                    else
                    {
                        ProvideInitialViewControllers(_splashScreen, _playerList);
                    }
                }
            }

            //The ancestor sets up the server event listeners
            //It would be possible to recieve an event that does a ui update after this call
            //and before the rest of the ui is set up, if we did this at the top.
            //So, we do it last
            base.DidActivate(firstActivation, activationType);
        }
 public void setSongDetail(SongDetail songDetail)
 {
     this.songDetail = songDetail;
 }
Пример #5
0
        private async void btnGetInfo_Click(object sender, RoutedEventArgs e)
        {
            if (txtId.Text == String.Empty)
            {
                MessageBox.Show("请输入ID", "网易云音乐工具");
                return;
            }

            if (txtId.Text.Trim().StartsWith("http") || txtId.Text.Trim().StartsWith("https"))
            {
                try
                {
                    id = GetIdFromLink(txtId.Text);
                }
                catch (Exception ee) when(String.Equals(ee.Message, "Wrong Url"))
                {
                    MessageBox.Show("歌曲链接格式错误,无法解析出歌曲id");
                    return;
                }
            }
            else
            {
                id = txtId.Text;
            }

            // 获取歌曲详情
            try
            {
                jsonDetail = await MusicApi.GetDetialAsync(id);

                // jsonDetial = MusicApi.GetDetial(id);
            }
            catch (WebException ee) when(String.Equals(ee.Message, "No Internet Exception"))
            {
                MessageBox.Show("无法连接到网络", "网易云音乐工具");
                return;
            }
            // 歌曲不存在
            if (jsonDetail == "{\"songs\":[],\"equalizers\":{},\"code\":200}")
            {
                MessageBox.Show("没有找到对应歌曲", "网易云音乐工具");
                return;
            }
            else if (jsonDetail == "{\"code\":400}")
            {
                MessageBox.Show("没有找到对应歌曲", "网易云音乐工具");
                return;
            }

            // 获取歌曲链接
            try {
                jsonUrl = await MusicApi.GetUrlAsync(id, br);

                // jsonUrl = MusicApi.GetUrl(id, br);
            }
            catch (WebException ee) when(String.Equals(ee.Message, "No Internet Exception"))
            {
                MessageBox.Show("无法连接到网络", "网易云音乐工具");
                return;
            }
            catch (Exception ee) when(String.Equals(ee.Message, "Error No Response"))
            {
                MessageBox.Show("向服务器请求数据失败,请重试", "网易云音乐工具");
                return;
            }

            // 解析歌曲信息
            SongDetail sdetail = JsonPrase.Prase <SongDetail>(jsonDetail);

            sName   = sdetail.songs[0].name;
            sArtist = String.Empty;
            foreach (var artist in sdetail.songs[0].artists)
            {
                sArtist += artist.name + ",";
            }
            sArtist   = sArtist.Substring(0, sArtist.Length - 1);
            sAlbum    = sdetail.songs[0].album.name;
            sDuration = sdetail.songs[0].duration;

            // 解析歌曲链接
            SongUrl surl = JsonPrase.Prase <SongUrl>(jsonUrl);

            sUrl = surl.data[0].url;
            sBr  = surl.data[0].br;

            // 更新界面数据
            txbName.Text      = sName;
            txbBitRate.Text   = sBr;
            txbArtist.Text    = sArtist;
            txbAlbum.Text     = sAlbum;
            txbDuration.Text  = sDuration;
            progressBar.Value = 0;
            if (String.Equals(sUrl, null))
            {
                txbUrl.Text = "无法获取下载地址,歌曲可能受版权保护";
            }
            else
            {
                txbUrl.Text = sUrl;
            }

            if (sUrl != null)
            {
                btnPlay.IsEnabled = true;
                btnPlay.Content   = " 播放 ";
                player.Open(new Uri(sUrl));
                btnDownload.IsEnabled = true;
            }
        }