From 573d6d1b5f52c9027f73b6036799015956e5b11c Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Fri, 2 Mar 2018 02:02:09 +0900 Subject: [PATCH] Allow multiple mappings to be generated for a single hitobject --- .../Tests/ManiaBeatmapConversionTest.cs | 14 +++++++----- .../Tests/OsuBeatmapConversionTest.cs | 5 +++-- .../Tests/TaikoBeatmapConversionTest.cs | 22 +++++++++++-------- .../Tests/Beatmaps/BeatmapConversionTest.cs | 4 ++-- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs b/osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs index 855a41aa9f..3c11478eab 100644 --- a/osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Mania/Tests/ManiaBeatmapConversionTest.cs @@ -2,6 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using System.Collections.Generic; using NUnit.Framework; using osu.Framework.MathUtils; using osu.Game.Beatmaps; @@ -26,12 +27,15 @@ namespace osu.Game.Rulesets.Mania.Tests base.Test(beatmapId); } - protected override ConvertValue CreateConvertValue(HitObject hitObject) => new ConvertValue + protected override IEnumerable CreateConvertValue(HitObject hitObject) { - StartTime = hitObject.StartTime, - EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, - Column = ((ManiaHitObject)hitObject).Column - }; + yield return new ConvertValue + { + StartTime = hitObject.StartTime, + EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, + Column = ((ManiaHitObject)hitObject).Column + }; + } protected override ITestableBeatmapConverter CreateConverter(Beatmap beatmap) => new ManiaBeatmapConverter(isForCurrentRuleset, beatmap); } diff --git a/osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs b/osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs index 2d4d188f3a..900b4bcb9b 100644 --- a/osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Osu/Tests/OsuBeatmapConversionTest.cs @@ -2,6 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using System.Collections.Generic; using NUnit.Framework; using osu.Framework.MathUtils; using osu.Game.Beatmaps; @@ -24,12 +25,12 @@ namespace osu.Game.Rulesets.Osu.Tests base.Test(beatmapId); } - protected override ConvertValue CreateConvertValue(HitObject hitObject) + protected override IEnumerable CreateConvertValue(HitObject hitObject) { var startPosition = (hitObject as IHasPosition)?.Position ?? new Vector2(256, 192); var endPosition = (hitObject as Slider)?.EndPosition ?? startPosition; - return new ConvertValue + yield return new ConvertValue { StartTime = hitObject.StartTime, EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, diff --git a/osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs b/osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs index 7f7acbea58..0522e01d19 100644 --- a/osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs +++ b/osu.Game.Rulesets.Taiko/Tests/TaikoBeatmapConversionTest.cs @@ -2,6 +2,7 @@ // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using System.Collections.Generic; using NUnit.Framework; using osu.Framework.MathUtils; using osu.Game.Beatmaps; @@ -26,16 +27,19 @@ namespace osu.Game.Rulesets.Taiko.Tests base.Test(beatmapId); } - protected override ConvertValue CreateConvertValue(HitObject hitObject) => new ConvertValue + protected override IEnumerable CreateConvertValue(HitObject hitObject) { - StartTime = hitObject.StartTime, - EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, - IsRim = hitObject is RimHit, - IsCentre = hitObject is CentreHit, - IsDrumRoll = hitObject is DrumRoll, - IsSwell = hitObject is Swell, - IsStrong = ((TaikoHitObject)hitObject).IsStrong - }; + yield return new ConvertValue + { + StartTime = hitObject.StartTime, + EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, + IsRim = hitObject is RimHit, + IsCentre = hitObject is CentreHit, + IsDrumRoll = hitObject is DrumRoll, + IsSwell = hitObject is Swell, + IsStrong = ((TaikoHitObject)hitObject).IsStrong + }; + } protected override ITestableBeatmapConverter CreateConverter(Beatmap beatmap) => new TaikoBeatmapConverter(isForCurrentRuleset); } diff --git a/osu.Game/Tests/Beatmaps/BeatmapConversionTest.cs b/osu.Game/Tests/Beatmaps/BeatmapConversionTest.cs index d718b6b533..5b5f6200b2 100644 --- a/osu.Game/Tests/Beatmaps/BeatmapConversionTest.cs +++ b/osu.Game/Tests/Beatmaps/BeatmapConversionTest.cs @@ -88,7 +88,7 @@ namespace osu.Game.Tests.Beatmaps var mapping = new ConvertMapping { StartTime = orig.StartTime }; foreach (var obj in converted) - mapping.Objects.Add(CreateConvertValue(obj)); + mapping.Objects.AddRange(CreateConvertValue(obj)); result.Mappings.Add(mapping); }; @@ -121,7 +121,7 @@ namespace osu.Game.Tests.Beatmaps return Assembly.LoadFrom(Path.Combine(localPath, $"{ResourceAssembly}.dll")).GetManifestResourceStream($@"{ResourceAssembly}.Resources.{name}"); } - protected abstract TConvertValue CreateConvertValue(HitObject hitObject); + protected abstract IEnumerable CreateConvertValue(HitObject hitObject); protected abstract ITestableBeatmapConverter CreateConverter(Beatmap beatmap); private class ConvertMapping