public static async Task <BeatmapLevelsModelSO.GetBeatmapLevelResult?> GetLevelFromPreview(IPreviewBeatmapLevel level, BeatmapLevelsModelSO beatmapLevelsModel = null) { beatmapLevelsModel = beatmapLevelsModel ?? Resources.FindObjectsOfTypeAll <BeatmapLevelsModelSO>().FirstOrDefault(); if (beatmapLevelsModel != null) { getLevelCancellationTokenSource?.Cancel(); getLevelCancellationTokenSource = new CancellationTokenSource(); var token = getLevelCancellationTokenSource.Token; BeatmapLevelsModelSO.GetBeatmapLevelResult?result = null; try { result = await beatmapLevelsModel.GetBeatmapLevelAsync(level.levelID, token); } catch (OperationCanceledException) { } if (result?.isError == true || result?.beatmapLevel == null) { return(null); //Null out entirely in case of error } return(result); } return(null); }
private async void LoadBeatmapLevelAsync(IPreviewBeatmapLevel selectedLevel, Action <AdditionalContentModelSO.EntitlementStatus, bool, IBeatmapLevel> callback) { var token = new CancellationTokenSource(); var entitlementStatus = await _contentModelSO.GetLevelEntitlementStatusAsync(selectedLevel.levelID, token.Token); if (entitlementStatus == AdditionalContentModelSO.EntitlementStatus.Owned) { BeatmapLevelsModelSO.GetBeatmapLevelResult getBeatmapLevelResult = await _beatmapLevelsModel.GetBeatmapLevelAsync(selectedLevel.levelID, token.Token); callback?.Invoke(entitlementStatus, !getBeatmapLevelResult.isError, getBeatmapLevelResult.beatmapLevel); } else { callback?.Invoke(entitlementStatus, false, null); } }
private async void LoadBeatmapLevelAsync(IPreviewBeatmapLevel selectedLevel, Action <bool, IBeatmapLevel> callback) { BeatmapLevelsModelSO.GetBeatmapLevelResult getBeatmapLevelResult = await _beatmapLevelsModel.GetBeatmapLevelAsync(selectedLevel.levelID, new CancellationTokenSource().Token); callback?.Invoke(!getBeatmapLevelResult.isError, getBeatmapLevelResult.beatmapLevel); }