protected override Task <StarDifficulty> ComputeValueAsync(DifficultyCacheLookup lookup, CancellationToken token = default) { var rateAdjust = lookup.OrderedMods.OfType <ModRateAdjust>().SingleOrDefault(); if (rateAdjust != null) { return(Task.FromResult(new StarDifficulty(BASE_STARS + rateAdjust.SpeedChange.Value, 0))); } return(Task.FromResult(new StarDifficulty(BASE_STARS, 0))); }
protected override Task <StarDifficulty> ComputeValueAsync(DifficultyCacheLookup lookup, CancellationToken token = default) { return(Task.Factory.StartNew(() => { if (CheckExists(lookup, out var existing)) { return existing; } return computeDifficulty(lookup); }, token, TaskCreationOptions.HideScheduler | TaskCreationOptions.RunContinuationsAsynchronously, updateScheduler)); }
protected override Task <StarDifficulty?> ComputeValueAsync(DifficultyCacheLookup lookup, CancellationToken token = default) { return(Task.FromResult <StarDifficulty?>(ComputeDifficulty?.Invoke(lookup) ?? new StarDifficulty(BASE_STARS, 0))); }