private void PlayNow_Pressed()
        {
            SongInfo       info  = roomInfo.selectedSong;
            BeatmapLevelSO level = SongLoader.CustomBeatmapLevelPackCollectionSO.beatmapLevelPacks.SelectMany(x => x.beatmapLevelCollection.beatmapLevels).FirstOrDefault(x => x.levelID.StartsWith(info.levelId)) as BeatmapLevelSO;

            if (level == null)
            {
                SongDownloader.Instance.RequestSongByLevelID(info.levelId,
                                                             (song) =>
                {
                    SongDownloader.Instance.DownloadSong(song, "MultiplayerSongs",
                                                         () =>
                    {
                        SongLoader.SongsLoadedEvent += PlayNow_SongsLoaded;
                    },
                                                         (progress) =>
                    {
                        _leaderboardViewController.SetProgressBarState((progress > 0f), progress);
                    });
                });
            }
            else
            {
                SongLoader.Instance.LoadAudioClipForLevel((CustomLevel)level,
                                                          (levelLoaded) =>
                {
                    _leaderboardViewController.SetProgressBarState(false, 0f);
                    BeatmapCharacteristicSO characteristic = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSO>().FirstOrDefault(x => x.serializedName == roomInfo.startLevelInfo.characteristicName);
                    StartLevel(levelLoaded, characteristic, roomInfo.startLevelInfo.difficulty, roomInfo.startLevelInfo.modifiers, currentTime);
                });
            }
        }
Example #2
0
        private void PlayNow_Pressed()
        {
            SongInfo             info  = roomInfo.selectedSong;
            IPreviewBeatmapLevel level = SongCore.Loader.CustomBeatmapLevelPackCollectionSO.beatmapLevelPacks.SelectMany(x => x.beatmapLevelCollection.beatmapLevels).FirstOrDefault(x => x.levelID == info.levelId);

            if (level == null)
            {
                SongDownloader.Instance.RequestSongByLevelID(info.hash,
                                                             (song) =>
                {
                    SongDownloader.Instance.DownloadSong(song,
                                                         (success) =>
                    {
                        if (success)
                        {
                            SongCore.Loader.SongsLoadedEvent += PlayNow_SongsLoaded;
                            SongCore.Loader.Instance.RefreshSongs(false);
                        }
                        else
                        {
                            _leaderboardViewController.SetProgressBarState(true, 1f);
                        }
                    },
                                                         (progress) =>
                    {
                        _leaderboardViewController.SetProgressBarState((progress > 0f), progress);
                    });
                });
            }
            else
            {
                _leaderboardViewController.SetProgressBarState(true, 1f);
                LoadBeatmapLevelAsync(level,
                                      (status, success, beatmapLevel) =>
                {
                    _leaderboardViewController.SetProgressBarState(false, 0f);

                    BeatmapCharacteristicSO characteristic = Resources.FindObjectsOfTypeAll <BeatmapCharacteristicSO>().FirstOrDefault(x => x.serializedName == roomInfo.startLevelInfo.characteristicName);
                    StartLevel(beatmapLevel, characteristic, roomInfo.startLevelInfo.difficulty, roomInfo.startLevelInfo.modifiers.ToGameplayModifiers(), currentTime);
                });
            }
        }