Make `BeatmapVerifier` an interface

This commit is contained in:
Naxess 2021-04-13 10:40:56 +02:00
parent c8cb4286f6
commit 60c2494b31
5 changed files with 7 additions and 29 deletions

View File

@ -10,21 +10,13 @@
namespace osu.Game.Rulesets.Osu.Edit
{
public class OsuBeatmapVerifier : BeatmapVerifier
public class OsuBeatmapVerifier : IBeatmapVerifier
{
private readonly List<ICheck> checks = new List<ICheck>
{
new CheckOffscreenObjects()
};
public override IEnumerable<Issue> Run(IBeatmap beatmap)
{
// Also run mode-invariant checks.
foreach (var issue in base.Run(beatmap))
yield return issue;
foreach (var issue in checks.SelectMany(check => check.Run(beatmap)))
yield return issue;
}
public IEnumerable<Issue> Run(IBeatmap beatmap) => checks.SelectMany(check => check.Run(beatmap));
}
}

View File

@ -206,7 +206,7 @@ public override IEnumerable<Mod> GetModsFor(ModType type)
public override HitObjectComposer CreateHitObjectComposer() => new OsuHitObjectComposer(this);
public override BeatmapVerifier CreateBeatmapVerifier() => new OsuBeatmapVerifier();
public override IBeatmapVerifier CreateBeatmapVerifier() => new OsuBeatmapVerifier();
public override string Description => "osu!";

View File

@ -2,27 +2,13 @@
// See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
using System.Linq;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Edit.Checks;
using osu.Game.Rulesets.Edit.Checks.Components;
namespace osu.Game.Rulesets.Edit
{
public abstract class BeatmapVerifier
public interface IBeatmapVerifier
{
/// <summary>
/// Checks which are performed regardless of ruleset.
/// These handle things like beatmap metadata, timing, and other ruleset agnostic elements.
/// </summary>
private readonly IReadOnlyList<ICheck> generalChecks = new List<ICheck>
{
new CheckBackground()
};
public virtual IEnumerable<Issue> Run(IBeatmap beatmap)
{
return generalChecks.SelectMany(check => check.Run(beatmap));
}
public IEnumerable<Issue> Run(IBeatmap beatmap);
}
}

View File

@ -202,7 +202,7 @@ public PerformanceCalculator CreatePerformanceCalculator(WorkingBeatmap beatmap,
public virtual HitObjectComposer CreateHitObjectComposer() => null;
public virtual BeatmapVerifier CreateBeatmapVerifier() => null;
public virtual IBeatmapVerifier CreateBeatmapVerifier() => null;
public virtual Drawable CreateIcon() => new SpriteIcon { Icon = FontAwesome.Solid.QuestionCircle };

View File

@ -21,7 +21,7 @@ namespace osu.Game.Screens.Edit.Verify
public class VerifyScreen : EditorScreen
{
private Ruleset ruleset;
private static BeatmapVerifier beatmapVerifier;
private static IBeatmapVerifier beatmapVerifier;
[Cached]
private Bindable<Issue> selectedIssue = new Bindable<Issue>();