mirror of
https://github.com/ppy/osu
synced 2024-12-24 15:53:37 +00:00
Fix legacy tick distance in JuiceStream generation
This commit is contained in:
parent
b90de83f33
commit
7d602c792d
@ -29,6 +29,7 @@ namespace osu.Game.Rulesets.Catch.Tests
|
|||||||
[TestCase("basic-hyperdash")]
|
[TestCase("basic-hyperdash")]
|
||||||
[TestCase("pixel-jump")]
|
[TestCase("pixel-jump")]
|
||||||
[TestCase("tiny-ticks")]
|
[TestCase("tiny-ticks")]
|
||||||
|
[TestCase("v8-tick-distance")]
|
||||||
public new void Test(string name, params Type[] mods) => base.Test(name, mods);
|
public new void Test(string name, params Type[] mods) => base.Test(name, mods);
|
||||||
|
|
||||||
protected override IEnumerable<ConvertValue> CreateConvertValue(HitObject hitObject)
|
protected override IEnumerable<ConvertValue> CreateConvertValue(HitObject hitObject)
|
||||||
|
@ -9,6 +9,7 @@ using System.Threading;
|
|||||||
using osu.Game.Rulesets.Objects.Types;
|
using osu.Game.Rulesets.Objects.Types;
|
||||||
using osu.Game.Rulesets.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
using osu.Framework.Extensions.IEnumerableExtensions;
|
using osu.Framework.Extensions.IEnumerableExtensions;
|
||||||
|
using osu.Game.Beatmaps.Legacy;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Beatmaps
|
namespace osu.Game.Rulesets.Catch.Beatmaps
|
||||||
{
|
{
|
||||||
@ -42,6 +43,9 @@ namespace osu.Game.Rulesets.Catch.Beatmaps
|
|||||||
NewCombo = comboData?.NewCombo ?? false,
|
NewCombo = comboData?.NewCombo ?? false,
|
||||||
ComboOffset = comboData?.ComboOffset ?? 0,
|
ComboOffset = comboData?.ComboOffset ?? 0,
|
||||||
LegacyConvertedY = yPositionData?.Y ?? CatchHitObject.DEFAULT_LEGACY_CONVERT_Y,
|
LegacyConvertedY = yPositionData?.Y ?? CatchHitObject.DEFAULT_LEGACY_CONVERT_Y,
|
||||||
|
// prior to v8, speed multipliers don't adjust for how many ticks are generated over the same distance.
|
||||||
|
// this results in more (or less) ticks being generated in <v8 maps for the same time duration.
|
||||||
|
TickDistanceMultiplier = beatmap.BeatmapInfo.BeatmapVersion < 8 ? 1 : ((LegacyControlPointInfo)beatmap.ControlPointInfo).DifficultyPointAt(obj.StartTime).SliderVelocity,
|
||||||
SliderVelocityMultiplier = sliderVelocityData?.SliderVelocityMultiplier ?? 1
|
SliderVelocityMultiplier = sliderVelocityData?.SliderVelocityMultiplier ?? 1
|
||||||
}.Yield();
|
}.Yield();
|
||||||
|
|
||||||
|
@ -41,6 +41,12 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
set => SliderVelocityMultiplierBindable.Value = value;
|
set => SliderVelocityMultiplierBindable.Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An extra multiplier that affects the number of <see cref="Droplet"/>s generated by this <see cref="JuiceStream"/>.
|
||||||
|
/// An increase in this value increases <see cref="TickDistance"/>, which reduces the number of ticks generated.
|
||||||
|
/// </summary>
|
||||||
|
public double TickDistanceMultiplier = 1;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
private double velocityFactor;
|
private double velocityFactor;
|
||||||
|
|
||||||
@ -51,7 +57,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
public double Velocity => velocityFactor * SliderVelocityMultiplier;
|
public double Velocity => velocityFactor * SliderVelocityMultiplier;
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public double TickDistance => tickDistanceFactor * SliderVelocityMultiplier;
|
public double TickDistance => tickDistanceFactor * TickDistanceMultiplier;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The length of one span of this <see cref="JuiceStream"/>.
|
/// The length of one span of this <see cref="JuiceStream"/>.
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"Mappings": [
|
||||||
|
{
|
||||||
|
"StartTime": 81593.0,
|
||||||
|
"Objects": [
|
||||||
|
{
|
||||||
|
"StartTime": 81593.0,
|
||||||
|
"Position": 384.0,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81652.0,
|
||||||
|
"Position": 377.608948,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81712.0,
|
||||||
|
"Position": 390.3638,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81772.0,
|
||||||
|
"Position": 407.118683,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81832.0,
|
||||||
|
"Position": 433.873535,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81891.0,
|
||||||
|
"Position": 444.482483,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 81951.0,
|
||||||
|
"Position": 437.237366,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 82011.0,
|
||||||
|
"Position": 443.992218,
|
||||||
|
"HyperDash": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"StartTime": 82107.0,
|
||||||
|
"Position": 459.0,
|
||||||
|
"HyperDash": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
osu file format v7
|
||||||
|
|
||||||
|
[General]
|
||||||
|
StackLeniency: 0.7
|
||||||
|
Mode: 0
|
||||||
|
|
||||||
|
[Difficulty]
|
||||||
|
HPDrainRate:5
|
||||||
|
CircleSize:4
|
||||||
|
OverallDifficulty:8
|
||||||
|
SliderMultiplier:1
|
||||||
|
SliderTickRate:1
|
||||||
|
|
||||||
|
[TimingPoints]
|
||||||
|
336,342.857142857143,4,1,0,100,1,0
|
||||||
|
81588,-200,4,2,0,100,0,0
|
||||||
|
|
||||||
|
[HitObjects]
|
||||||
|
384,72,81593,2,12,B|464:72,1,75,4|4
|
Loading…
Reference in New Issue
Block a user