Output one value per slider nested hitobject

This commit is contained in:
smoogipoo 2018-06-14 01:27:33 +09:00 committed by Dean Herbert
parent 0366b0f081
commit 6f65ad33f0
3 changed files with 287 additions and 151 deletions

View File

@ -9,7 +9,6 @@ using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Objects.Types; using osu.Game.Rulesets.Objects.Types;
using osu.Game.Rulesets.Osu.Objects; using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Tests.Beatmaps; using osu.Game.Tests.Beatmaps;
using OpenTK;
namespace osu.Game.Rulesets.Osu.Tests namespace osu.Game.Rulesets.Osu.Tests
{ {
@ -27,17 +26,23 @@ namespace osu.Game.Rulesets.Osu.Tests
protected override IEnumerable<ConvertValue> CreateConvertValue(HitObject hitObject) protected override IEnumerable<ConvertValue> CreateConvertValue(HitObject hitObject)
{ {
var startPosition = (hitObject as IHasPosition)?.Position ?? new Vector2(256, 192); switch (hitObject)
var endPosition = (hitObject as Slider)?.EndPosition ?? startPosition;
yield return new ConvertValue
{ {
StartTime = hitObject.StartTime, case Slider slider:
EndTime = (hitObject as IHasEndTime)?.EndTime ?? hitObject.StartTime, foreach (var nested in slider.NestedHitObjects)
StartX = startPosition.X, yield return createConvertValue(nested);
StartY = startPosition.Y, break;
EndX = endPosition.X, default:
EndY = endPosition.Y yield return createConvertValue(hitObject);
break;
}
ConvertValue createConvertValue(HitObject obj) => new ConvertValue
{
StartTime = obj.StartTime,
EndTime = (obj as IHasEndTime)?.EndTime ?? obj.StartTime,
X = (obj as IHasPosition)?.X ?? 256,
Y = (obj as IHasPosition)?.Y ?? 192,
}; };
} }
@ -53,17 +58,13 @@ namespace osu.Game.Rulesets.Osu.Tests
public double StartTime; public double StartTime;
public double EndTime; public double EndTime;
public float StartX; public float X;
public float StartY; public float Y;
public float EndX;
public float EndY;
public bool Equals(ConvertValue other) public bool Equals(ConvertValue other)
=> Precision.AlmostEquals(StartTime, other.StartTime) => Precision.AlmostEquals(StartTime, other.StartTime, conversion_lenience)
&& Precision.AlmostEquals(EndTime, other.EndTime, conversion_lenience) && Precision.AlmostEquals(EndTime, other.EndTime, conversion_lenience)
&& Precision.AlmostEquals(StartX, other.StartX) && Precision.AlmostEquals(X, other.X, conversion_lenience)
&& Precision.AlmostEquals(StartY, other.StartY, conversion_lenience) && Precision.AlmostEquals(Y, other.Y, conversion_lenience);
&& Precision.AlmostEquals(EndX, other.EndX, conversion_lenience)
&& Precision.AlmostEquals(EndY, other.EndY, conversion_lenience);
} }
} }

View File

@ -1,124 +1,256 @@
{ {
"Mappings": [{ "Mappings": [{
"StartTime": 500, "StartTime": 500.0,
"Objects": [{ "Objects": [{
"StartTime": 500, "StartTime": 500.0,
"EndTime": 2500, "EndTime": 500.0,
"StartX": 96, "X": 96.0,
"StartY": 192, "Y": 192.0
"EndX": 96, }, {
"EndY": 192 "StartTime": 1000.0,
}] "EndTime": 1000.0,
}, "X": 256.0,
{ "Y": 192.0
"StartTime": 3000, }, {
"Objects": [{ "StartTime": 1500.0,
"StartTime": 3000, "EndTime": 1500.0,
"EndTime": 4000, "X": 416.0,
"StartX": 256, "Y": 192.0
"StartY": 192, }, {
"EndX": 256, "StartTime": 2000.0,
"EndY": 192 "EndTime": 2000.0,
}] "X": 256.0,
}, "Y": 192.0
{ }, {
"StartTime": 4500, "StartTime": 2464.0,
"Objects": [{ "EndTime": 2464.0,
"StartTime": 4500, "X": 96.0,
"EndTime": 5500, "Y": 192.0
"StartX": 256, }]
"StartY": 192, }, {
"EndX": 256, "StartTime": 3000.0,
"EndY": 192 "Objects": [{
}] "StartTime": 3000.0,
}, "EndTime": 4000.0,
{ "X": 256.0,
"StartTime": 6000, "Y": 192.0
"Objects": [{ }]
"StartTime": 6000, }, {
"EndTime": 6500, "StartTime": 4500.0,
"StartX": 256, "Objects": [{
"StartY": 192, "StartTime": 4500.0,
"EndX": 256, "EndTime": 5500.0,
"EndY": 192 "X": 256.0,
}] "Y": 192.0
}, }]
{ }, {
"StartTime": 7000, "StartTime": 6000.0,
"Objects": [{ "Objects": [{
"StartTime": 7000, "StartTime": 6000.0,
"EndTime": 8000, "EndTime": 6500.0,
"StartX": 256, "X": 256.0,
"StartY": 128, "Y": 192.0
"EndX": 256, }]
"EndY": 128 }, {
}] "StartTime": 7000.0,
}, "Objects": [{
{ "StartTime": 7000.0,
"StartTime": 8500, "EndTime": 7000.0,
"Objects": [{ "X": 256.0,
"StartTime": 8500, "Y": 128.0
"EndTime": 10999, }, {
"StartX": 32, "StartTime": 7250.0,
"StartY": 192, "EndTime": 7250.0,
"EndX": 508.166229, "X": 336.0,
"EndY": 153.299271 "Y": 128.0
}] }, {
}, "StartTime": 7500.0,
{ "EndTime": 7500.0,
"StartTime": 11500, "X": 256.0,
"Objects": [{ "Y": 128.0
"StartTime": 11500, }, {
"EndTime": 12000, "StartTime": 7750.0,
"StartX": 256, "EndTime": 7750.0,
"StartY": 192, "X": 336.0,
"EndX": 256, "Y": 128.0
"EndY": 192 }, {
}] "StartTime": 7964.0,
}, "EndTime": 7964.0,
{ "X": 256.0,
"StartTime": 12500, "Y": 128.0
"Objects": [{ }]
"StartTime": 12500, }, {
"EndTime": 16500, "StartTime": 8500.0,
"StartX": 512, "Objects": [{
"StartY": 320, "StartTime": 8500.0,
"EndX": 291.1977, "EndTime": 8500.0,
"EndY": 40.799427 "X": 32.0,
}] "Y": 192.0
}, }, {
{ "StartTime": 9000.0,
"StartTime": 17000, "EndTime": 9000.0,
"Objects": [{ "X": 101.81015,
"StartTime": 17000, "Y": 326.4915
"EndTime": 18000, }, {
"StartX": 256, "StartTime": 9500.0,
"StartY": 256, "EndTime": 9500.0,
"EndX": 256, "X": 237.2304,
"EndY": 256 "Y": 276.282928
}] }, {
}, "StartTime": 10000.0,
{ "EndTime": 10000.0,
"StartTime": 18500, "X": 270.339874,
"Objects": [{ "Y": 121.1423
"StartTime": 18500, }, {
"EndTime": 19450, "StartTime": 10500.0,
"StartX": 256, "EndTime": 10500.0,
"StartY": 192, "X": 401.0588,
"EndX": 256, "Y": 49.1515045
"EndY": 192 }, {
}] "StartTime": 10964.0,
}, "EndTime": 10964.0,
{ "X": 508.166229,
"StartTime": 19875, "Y": 153.299271
"Objects": [{ }]
"StartTime": 19875, }, {
"EndTime": 23874, "StartTime": 11500.0,
"StartX": 216, "Objects": [{
"StartY": 231, "StartTime": 11500.0,
"EndX": 408.720825, "EndTime": 12000.0,
"EndY": 339.810455 "X": 256.0,
}] "Y": 192.0
} }]
] }, {
"StartTime": 12500.0,
"Objects": [{
"StartTime": 12500.0,
"EndTime": 12500.0,
"X": 512.0,
"Y": 320.0
}, {
"StartTime": 13000.0,
"EndTime": 13000.0,
"X": 353.235535,
"Y": 300.154449
}, {
"StartTime": 13500.0,
"EndTime": 13500.0,
"X": 194.471069,
"Y": 280.3089
}, {
"StartTime": 14000.0,
"EndTime": 14000.0,
"X": 35.7066345,
"Y": 260.463318
}, {
"StartTime": 14500.0,
"EndTime": 14500.0,
"X": 118.370323,
"Y": 219.009277
}, {
"StartTime": 15000.0,
"EndTime": 15000.0,
"X": 271.087128,
"Y": 171.285278
}, {
"StartTime": 15500.0,
"EndTime": 15500.0,
"X": 423.803925,
"Y": 123.561279
}, {
"StartTime": 16000.0,
"EndTime": 16000.0,
"X": 446.420532,
"Y": 79.60513
}, {
"StartTime": 16464.0,
"EndTime": 16464.0,
"X": 291.1977,
"Y": 40.799427
}]
}, {
"StartTime": 17000.0,
"Objects": [{
"StartTime": 17000.0,
"EndTime": 17000.0,
"X": 256.0,
"Y": 256.0
}, {
"StartTime": 17250.0,
"EndTime": 17250.0,
"X": 176.0,
"Y": 256.0
}, {
"StartTime": 17500.0,
"EndTime": 17500.0,
"X": 256.0,
"Y": 256.0
}, {
"StartTime": 17750.0,
"EndTime": 17750.0,
"X": 176.0,
"Y": 256.0
}, {
"StartTime": 17964.0,
"EndTime": 17964.0,
"X": 256.0,
"Y": 256.0
}]
}, {
"StartTime": 18500.0,
"Objects": [{
"StartTime": 18500.0,
"EndTime": 19450.0,
"X": 256.0,
"Y": 192.0
}]
}, {
"StartTime": 19875.0,
"Objects": [{
"StartTime": 19875.0,
"EndTime": 19875.0,
"X": 216.0,
"Y": 231.0
}, {
"StartTime": 20375.0,
"EndTime": 20375.0,
"X": 317.446747,
"Y": 171.345245
}, {
"StartTime": 20875.0,
"EndTime": 20875.0,
"X": 270.3294,
"Y": 310.4395
}, {
"StartTime": 21375.0,
"EndTime": 21375.0,
"X": 119.121056,
"Y": 322.8657
}, {
"StartTime": 21875.0,
"EndTime": 21875.0,
"X": 124.28746,
"Y": 165.224731
}, {
"StartTime": 22375.0,
"EndTime": 22375.0,
"X": 240.4715,
"Y": 62.65587
}, {
"StartTime": 22875.0,
"EndTime": 22875.0,
"X": 398.054047,
"Y": 39.064167
}, {
"StartTime": 23375.0,
"EndTime": 23375.0,
"X": 439.749878,
"Y": 183.668091
}, {
"StartTime": 23839.0,
"EndTime": 23839.0,
"X": 408.720825,
"Y": 339.810455
}]
}]
} }

View File

@ -1,13 +1,16 @@
{ {
"Mappings": [{ "Mappings": [{
"StartTime": 118858, "StartTime": 118858.0,
"Objects": [{ "Objects": [{
"StartTime": 118858, "StartTime": 118858.0,
"EndTime": 119088, "EndTime": 118858.0,
"StartX": 219, "X": 219.0,
"StartY": 215, "Y": 215.0
"EndX": 239.6507, }, {
"EndY": 29.1437378 "StartTime": 119052.0,
"EndTime": 119052.0,
"X": 239.6507,
"Y": 29.1437378
}]
}] }]
}]
} }