From ec8b320e21ddb366c5527ba80d00c0414ca8a38d Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Fri, 6 Dec 2024 17:45:19 +0900 Subject: [PATCH] Handle non-legacy types Also used in some tests (e.g. beatmaps containing `HitCircle`s). --- .../Beatmaps/ManiaBeatmapConverter.cs | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs index 0792c75e54..79234a3ba2 100644 --- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs +++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs @@ -126,23 +126,41 @@ namespace osu.Game.Rulesets.Mania.Beatmaps protected override IEnumerable ConvertHitObject(HitObject original, IBeatmap beatmap, CancellationToken cancellationToken) { - if (original is ManiaHitObject maniaObj) + LegacyHitObjectType legacyType; + + switch (original) { - yield return maniaObj; + case ManiaHitObject maniaObj: + { + yield return maniaObj; - yield break; + yield break; + } + + case IHasLegacyHitObjectType legacy: + legacyType = legacy.LegacyType & LegacyHitObjectType.ObjectTypes; + break; + + case IHasPath: + legacyType = LegacyHitObjectType.Slider; + break; + + case IHasDuration: + legacyType = LegacyHitObjectType.Hold; + break; + + default: + legacyType = LegacyHitObjectType.Circle; + break; } - if (original is not IHasLegacyHitObjectType legacy) - yield break; - double startTime = original.StartTime; double endTime = (original as IHasDuration)?.EndTime ?? startTime; Vector2 position = (original as IHasPosition)?.Position ?? Vector2.Zero; PatternGenerator conversion; - switch (legacy.LegacyType & LegacyHitObjectType.ObjectTypes) + switch (legacyType) { case LegacyHitObjectType.Circle: if (IsForCurrentRuleset) @@ -197,7 +215,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps break; default: - throw new ArgumentException($"Invalid legacy object type: {legacy.LegacyType}", nameof(original)); + throw new ArgumentException($"Invalid legacy object type: {legacyType}", nameof(original)); } foreach (var newPattern in conversion.Generate())