public void UpdateUI(ChannelState state) { switch (state) { case ChannelState.NextSong: { if (!_radioNavController.viewControllers.Contains(_nextSongScreenViewController)) { PopAllViewControllers(); } ShowNextSongScreen(); IPreviewBeatmapLevel level = SongCore.Loader.CustomBeatmapLevelPackCollectionSO.beatmapLevelPacks.SelectMany(x => x.beatmapLevelCollection.beatmapLevels).FirstOrDefault(x => x.levelID.StartsWith(channelInfo.currentSong.levelId)); if (level == null) { Client.Instance.playerInfo.updateInfo.playerState = PlayerState.DownloadingSongs; SongDownloader.Instance.RequestSongByLevelID(channelInfo.currentSong.hash, (song) => { SongDownloader.Instance.DownloadSong(song, (success) => { if (success) { void onLoaded(SongCore.Loader sender, Dictionary <string, CustomPreviewBeatmapLevel> songs) { SongCore.Loader.SongsLoadedEvent -= onLoaded; Client.Instance.playerInfo.updateInfo.playerState = PlayerState.Room; channelInfo.currentSong.UpdateLevelId(); level = songs.FirstOrDefault(x => x.Value.levelID == channelInfo.currentSong.levelId).Value; if (level != null) { LoadBeatmapLevelAsync(level, (loaded, beatmapLevel) => { PreviewPlayer.CrossfadeTo(beatmapLevel.beatmapLevelData.audioClip, beatmapLevel.previewStartTime, Math.Max(totalTime - currentTime, beatmapLevel.previewDuration)); }); } } SongCore.Loader.SongsLoadedEvent += onLoaded; SongCore.Loader.Instance.RefreshSongs(false); } }, (progress) => { _nextSongScreenViewController.SetProgressBarState((progress < 100f), progress); }); }); } Client.Instance.playerInfo.updateInfo.playerScore = 0; Client.Instance.playerInfo.updateInfo.playerEnergy = 0f; Client.Instance.playerInfo.updateInfo.playerCutBlocks = 0; Client.Instance.playerInfo.updateInfo.playerComboBlocks = 0; } break; case ChannelState.InGame: { if (!_radioNavController.viewControllers.Contains(_inGameViewController)) { PopAllViewControllers(); } ShowInGameScreen(); } break; case ChannelState.Results: { if (!_radioNavController.viewControllers.Contains(_resultsScreenViewController)) { PopAllViewControllers(); } ShowResultsScreen(); } break; } }
public void UpdateUI(ChannelState state) { switch (state) { case ChannelState.NextSong: { if (!_radioNavController.viewControllers.Contains(_nextSongScreenViewController)) { PopAllViewControllers(); } ShowNextSongScreen(); BeatmapLevelSO level = SongLoader.CustomBeatmapLevelPackCollectionSO.beatmapLevelPacks.SelectMany(x => x.beatmapLevelCollection.beatmapLevels).FirstOrDefault(x => x.levelID.StartsWith(channelInfo.currentSong.levelId)) as BeatmapLevelSO; if (level == null) { Client.Instance.playerInfo.playerState = PlayerState.DownloadingSongs; SongDownloader.Instance.RequestSongByLevelID(channelInfo.currentSong.levelId, (song) => { SongDownloader.Instance.DownloadSong(song, "RadioSongs", () => { Action <SongLoader, List <CustomLevel> > onLoaded = null; onLoaded = (sender, songs) => { SongLoader.SongsLoadedEvent -= onLoaded; Client.Instance.playerInfo.playerState = PlayerState.Room; level = songs.FirstOrDefault(x => x.levelID.StartsWith(channelInfo.currentSong.levelId)); if (level != null) { SongLoader.Instance.LoadAudioClipForLevel((CustomLevel)level, (levelLoaded) => { PreviewPlayer.CrossfadeTo(levelLoaded.beatmapLevelData.audioClip, levelLoaded.previewStartTime, Math.Max(totalTime - currentTime, levelLoaded.previewDuration)); }); } }; SongLoader.SongsLoadedEvent += onLoaded; }, (progress) => { _nextSongScreenViewController.SetProgressBarState((progress < 100f), progress); }); }); } Client.Instance.playerInfo.playerScore = 0; Client.Instance.playerInfo.playerEnergy = 0f; Client.Instance.playerInfo.playerCutBlocks = 0; Client.Instance.playerInfo.playerComboBlocks = 0; } break; case ChannelState.InGame: { if (!_radioNavController.viewControllers.Contains(_inGameViewController)) { PopAllViewControllers(); } ShowInGameScreen(); } break; case ChannelState.Results: { if (!_radioNavController.viewControllers.Contains(_resultsScreenViewController)) { PopAllViewControllers(); } ShowResultsScreen(); } break; } }