1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 11:37:28 +08:00

Merge branch 'master' into importer-post-import-rename

This commit is contained in:
Bartłomiej Dach 2022-06-20 13:37:16 +02:00 committed by GitHub
commit 577a87bcad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 9 deletions

View File

@ -264,14 +264,16 @@ namespace osu.Game
var defaultBeatmap = new DummyWorkingBeatmap(Audio, Textures); var defaultBeatmap = new DummyWorkingBeatmap(Audio, Textures);
dependencies.Cache(difficultyCache = new BeatmapDifficultyCache());
// ordering is important here to ensure foreign keys rules are not broken in ModelStore.Cleanup() // ordering is important here to ensure foreign keys rules are not broken in ModelStore.Cleanup()
dependencies.Cache(ScoreManager = new ScoreManager(RulesetStore, () => BeatmapManager, Storage, realm, Scheduler, () => difficultyCache, LocalConfig)); dependencies.Cache(ScoreManager = new ScoreManager(RulesetStore, () => BeatmapManager, Storage, realm, Scheduler, difficultyCache, LocalConfig));
dependencies.Cache(BeatmapManager = new BeatmapManager(Storage, realm, RulesetStore, API, Audio, Resources, Host, defaultBeatmap, performOnlineLookups: true)); dependencies.Cache(BeatmapManager = new BeatmapManager(Storage, realm, RulesetStore, API, Audio, Resources, Host, defaultBeatmap, performOnlineLookups: true));
dependencies.Cache(BeatmapDownloader = new BeatmapModelDownloader(BeatmapManager, API)); dependencies.Cache(BeatmapDownloader = new BeatmapModelDownloader(BeatmapManager, API));
dependencies.Cache(ScoreDownloader = new ScoreModelDownloader(ScoreManager, API)); dependencies.Cache(ScoreDownloader = new ScoreModelDownloader(ScoreManager, API));
dependencies.Cache(difficultyCache = new BeatmapDifficultyCache()); // Add after all the above cache operations as it depends on them.
AddInternal(difficultyCache); AddInternal(difficultyCache);
dependencies.Cache(userCache = new UserLookupCache()); dependencies.Cache(userCache = new UserLookupCache());

View File

@ -27,16 +27,16 @@ namespace osu.Game.Scoring
public class ScoreManager : ModelManager<ScoreInfo>, IModelImporter<ScoreInfo> public class ScoreManager : ModelManager<ScoreInfo>, IModelImporter<ScoreInfo>
{ {
private readonly Scheduler scheduler; private readonly Scheduler scheduler;
private readonly Func<BeatmapDifficultyCache> difficulties; private readonly BeatmapDifficultyCache difficultyCache;
private readonly OsuConfigManager configManager; private readonly OsuConfigManager configManager;
private readonly ScoreImporter scoreImporter; private readonly ScoreImporter scoreImporter;
public ScoreManager(RulesetStore rulesets, Func<BeatmapManager> beatmaps, Storage storage, RealmAccess realm, Scheduler scheduler, public ScoreManager(RulesetStore rulesets, Func<BeatmapManager> beatmaps, Storage storage, RealmAccess realm, Scheduler scheduler,
Func<BeatmapDifficultyCache> difficulties = null, OsuConfigManager configManager = null) BeatmapDifficultyCache difficultyCache = null, OsuConfigManager configManager = null)
: base(storage, realm) : base(storage, realm)
{ {
this.scheduler = scheduler; this.scheduler = scheduler;
this.difficulties = difficulties; this.difficultyCache = difficultyCache;
this.configManager = configManager; this.configManager = configManager;
scoreImporter = new ScoreImporter(rulesets, beatmaps, storage, realm) scoreImporter = new ScoreImporter(rulesets, beatmaps, storage, realm)
@ -65,8 +65,6 @@ namespace osu.Game.Scoring
/// <returns>The given <paramref name="scores"/> ordered by decreasing total score.</returns> /// <returns>The given <paramref name="scores"/> ordered by decreasing total score.</returns>
public async Task<ScoreInfo[]> OrderByTotalScoreAsync(ScoreInfo[] scores, CancellationToken cancellationToken = default) public async Task<ScoreInfo[]> OrderByTotalScoreAsync(ScoreInfo[] scores, CancellationToken cancellationToken = default)
{ {
var difficultyCache = difficulties?.Invoke();
if (difficultyCache != null) if (difficultyCache != null)
{ {
// Compute difficulties asynchronously first to prevent blocking via the GetTotalScore() call below. // Compute difficulties asynchronously first to prevent blocking via the GetTotalScore() call below.
@ -168,11 +166,11 @@ namespace osu.Game.Scoring
return score.BeatmapInfo.MaxCombo.Value; return score.BeatmapInfo.MaxCombo.Value;
#pragma warning restore CS0618 #pragma warning restore CS0618
if (difficulties == null) if (difficultyCache == null)
return null; return null;
// We can compute the max combo locally after the async beatmap difficulty computation. // We can compute the max combo locally after the async beatmap difficulty computation.
var difficulty = await difficulties().GetDifficultyAsync(score.BeatmapInfo, score.Ruleset, score.Mods, cancellationToken).ConfigureAwait(false); var difficulty = await difficultyCache.GetDifficultyAsync(score.BeatmapInfo, score.Ruleset, score.Mods, cancellationToken).ConfigureAwait(false);
return difficulty?.MaxCombo; return difficulty?.MaxCombo;
} }