diff --git a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs b/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs index e82b3f46ec..3b7b1c3a29 100644 --- a/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs +++ b/osu.Game.Modes.Catch/Beatmaps/CatchBeatmapConverter.cs @@ -10,11 +10,11 @@ using osu.Game.Modes.Beatmaps; namespace osu.Game.Modes.Catch.Beatmaps { - internal class CatchBeatmapConverter : IBeatmapConverter + internal class CatchBeatmapConverter : BeatmapConverter { - public IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) }; + public override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) }; - public Beatmap Convert(Beatmap original) + public override Beatmap Convert(Beatmap original) { return new Beatmap(original) { diff --git a/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs b/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs index 46f89b5575..7e47db6259 100644 --- a/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs +++ b/osu.Game.Modes.Catch/CatchDifficultyCalculator.cs @@ -20,6 +20,6 @@ namespace osu.Game.Modes.Catch return 0; } - protected override IBeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter(); } } \ No newline at end of file diff --git a/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs b/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs index 5b5f7ff2eb..4b2a93977f 100644 --- a/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs +++ b/osu.Game.Modes.Catch/UI/CatchHitRenderer.cs @@ -22,7 +22,7 @@ namespace osu.Game.Modes.Catch.UI public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(this); - protected override IBeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new CatchBeatmapConverter(); protected override IBeatmapProcessor CreateBeatmapProcessor() => new CatchBeatmapProcessor(); diff --git a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs index 188679d47c..6dbf4af6b1 100644 --- a/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Modes.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -10,11 +10,11 @@ using osu.Game.Modes.Beatmaps; namespace osu.Game.Modes.Mania.Beatmaps { - internal class ManiaBeatmapConverter : IBeatmapConverter + internal class ManiaBeatmapConverter : BeatmapConverter { - public IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasColumn) }; + public override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasColumn) }; - public Beatmap Convert(Beatmap original) + public override Beatmap Convert(Beatmap original) { return new Beatmap(original) { diff --git a/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs b/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs index 629c5a3374..84e5ee2d72 100644 --- a/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs +++ b/osu.Game.Modes.Mania/ManiaDifficultyCalculator.cs @@ -21,6 +21,6 @@ namespace osu.Game.Modes.Mania return 0; } - protected override IBeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter(); } } \ No newline at end of file diff --git a/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs b/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs index 9cee3bff87..6bc8ab0788 100644 --- a/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs +++ b/osu.Game.Modes.Mania/UI/ManiaHitRenderer.cs @@ -25,7 +25,7 @@ namespace osu.Game.Modes.Mania.UI public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor(this); - protected override IBeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new ManiaBeatmapConverter(); protected override IBeatmapProcessor CreateBeatmapProcessor() => new ManiaBeatmapProcessor(); diff --git a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs b/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs index abb18e8236..dd8dde5530 100644 --- a/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs +++ b/osu.Game.Modes.Osu/Beatmaps/OsuBeatmapConverter.cs @@ -14,11 +14,11 @@ using osu.Game.Modes.Beatmaps; namespace osu.Game.Modes.Osu.Beatmaps { - internal class OsuBeatmapConverter : IBeatmapConverter + internal class OsuBeatmapConverter : BeatmapConverter { - public IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasPosition) }; + public override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasPosition) }; - public Beatmap Convert(Beatmap original) + public override Beatmap Convert(Beatmap original) { return new Beatmap(original) { diff --git a/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs b/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs index 9b4c6875c8..f3ef47fe27 100644 --- a/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs +++ b/osu.Game.Modes.Osu/OsuDifficultyCalculator.cs @@ -181,7 +181,7 @@ namespace osu.Game.Modes.Osu return difficulty; } - protected override IBeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter(); // Those values are used as array indices. Be careful when changing them! public enum DifficultyType diff --git a/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs b/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs index 0e7772bc11..0f73fcdb19 100644 --- a/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs +++ b/osu.Game.Modes.Osu/UI/OsuHitRenderer.cs @@ -25,7 +25,7 @@ namespace osu.Game.Modes.Osu.UI public override ScoreProcessor CreateScoreProcessor() => new OsuScoreProcessor(this); - protected override IBeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new OsuBeatmapConverter(); protected override IBeatmapProcessor CreateBeatmapProcessor() => new OsuBeatmapProcessor(); diff --git a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs b/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs index 25aa296eb7..c7ff225d0a 100644 --- a/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs +++ b/osu.Game.Modes.Taiko/Beatmaps/TaikoBeatmapConverter.cs @@ -15,7 +15,7 @@ using osu.Game.Modes.Beatmaps; namespace osu.Game.Modes.Taiko.Beatmaps { - internal class TaikoBeatmapConverter : IBeatmapConverter + internal class TaikoBeatmapConverter : BeatmapConverter { /// /// osu! is generally slower than taiko, so a factor is added to increase @@ -39,9 +39,9 @@ namespace osu.Game.Modes.Taiko.Beatmaps /// private const float taiko_base_distance = 100; - public IEnumerable ValidConversionTypes { get; } = new[] { typeof(HitObject) }; + public override IEnumerable ValidConversionTypes { get; } = new[] { typeof(HitObject) }; - public Beatmap Convert(Beatmap original) + public override Beatmap Convert(Beatmap original) { BeatmapInfo info = original.BeatmapInfo.DeepClone(); info.Difficulty.SliderMultiplier *= legacy_velocity_multiplier; diff --git a/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs b/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs index 3cc0536fd3..453a937b9e 100644 --- a/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs +++ b/osu.Game.Modes.Taiko/TaikoDifficultyCalculator.cs @@ -20,6 +20,6 @@ namespace osu.Game.Modes.Taiko return 0; } - protected override IBeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter(); } } \ No newline at end of file diff --git a/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs b/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs index 6ed43afe7d..18cbd30776 100644 --- a/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs +++ b/osu.Game.Modes.Taiko/UI/TaikoHitRenderer.cs @@ -115,7 +115,7 @@ namespace osu.Game.Modes.Taiko.UI public override ScoreProcessor CreateScoreProcessor() => new TaikoScoreProcessor(this); - protected override IBeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter(); + protected override BeatmapConverter CreateBeatmapConverter() => new TaikoBeatmapConverter(); protected override IBeatmapProcessor CreateBeatmapProcessor() => new TaikoBeatmapProcessor(); diff --git a/osu.Game/Beatmaps/DifficultyCalculator.cs b/osu.Game/Beatmaps/DifficultyCalculator.cs index 48fdf250f0..911aaa7189 100644 --- a/osu.Game/Beatmaps/DifficultyCalculator.cs +++ b/osu.Game/Beatmaps/DifficultyCalculator.cs @@ -42,6 +42,6 @@ namespace osu.Game.Beatmaps { } - protected abstract IBeatmapConverter CreateBeatmapConverter(); + protected abstract BeatmapConverter CreateBeatmapConverter(); } } diff --git a/osu.Game/Modes/Beatmaps/IBeatmapConverter.cs b/osu.Game/Modes/Beatmaps/BeatmapConverter.cs similarity index 63% rename from osu.Game/Modes/Beatmaps/IBeatmapConverter.cs rename to osu.Game/Modes/Beatmaps/BeatmapConverter.cs index cfc27c5bdb..4a8684864f 100644 --- a/osu.Game/Modes/Beatmaps/IBeatmapConverter.cs +++ b/osu.Game/Modes/Beatmaps/BeatmapConverter.cs @@ -13,30 +13,25 @@ namespace osu.Game.Modes.Beatmaps /// Converts a Beatmap for another mode. /// /// The type of HitObject stored in the Beatmap. - public interface IBeatmapConverter where T : HitObject + public abstract class BeatmapConverter where T : HitObject { /// /// The types of HitObjects that can be converted to be used for this Beatmap. /// - IEnumerable ValidConversionTypes { get; } + public abstract IEnumerable ValidConversionTypes { get; } /// /// Converts a Beatmap to another mode. /// /// The original Beatmap. /// The converted Beatmap. - Beatmap Convert(Beatmap original); - } + public abstract Beatmap Convert(Beatmap original); - public static class BeatmapConverterExtensions - { /// /// Checks if a Beatmap can be converted using this Beatmap Converter. /// - /// The Beatmap Converter. /// The Beatmap to check. - /// Whether the Beatmap can be converted using . - public static bool CanConvert(this IBeatmapConverter converter, Beatmap beatmap) where TObject : HitObject - => converter.ValidConversionTypes.All(t => beatmap.HitObjects.Any(h => t.IsAssignableFrom(h.GetType()))); + /// Whether the Beatmap can be converted using this Beatmap Converter. + public bool CanConvert(Beatmap beatmap) => ValidConversionTypes.All(t => beatmap.HitObjects.Any(h => t.IsAssignableFrom(h.GetType()))); } } diff --git a/osu.Game/Modes/UI/HitRenderer.cs b/osu.Game/Modes/UI/HitRenderer.cs index 7ccd29a977..46d05aa98f 100644 --- a/osu.Game/Modes/UI/HitRenderer.cs +++ b/osu.Game/Modes/UI/HitRenderer.cs @@ -120,7 +120,7 @@ namespace osu.Game.Modes.UI RelativeSizeAxes = Axes.Both; - IBeatmapConverter converter = CreateBeatmapConverter(); + BeatmapConverter converter = CreateBeatmapConverter(); IBeatmapProcessor processor = CreateBeatmapProcessor(); // Check if the beatmap can be converted @@ -158,7 +158,7 @@ namespace osu.Game.Modes.UI /// Creates a converter to convert Beatmap to a specific mode. /// /// The Beatmap converter. - protected abstract IBeatmapConverter CreateBeatmapConverter(); + protected abstract BeatmapConverter CreateBeatmapConverter(); /// /// Creates a processor to perform post-processing operations diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index 84589e53a1..770008be5f 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -72,7 +72,7 @@ - +