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); }); } }
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); }); } }