mirror of
https://github.com/ppy/osu.git
synced 2024-12-16 00:02:54 +08:00
Add a velocity multiplier to taiko hit objects.
This will be usable from the editor moving forward also - where every hit object can have its own velocity multiplier on top of the control point one.
This commit is contained in:
parent
aad8851460
commit
d7ed392f27
@ -26,8 +26,6 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
|
|
||||||
public Beatmap<TaikoHitObject> Convert(Beatmap original)
|
public Beatmap<TaikoHitObject> Convert(Beatmap original)
|
||||||
{
|
{
|
||||||
if (original is LegacyBeatmap)
|
|
||||||
original.TimingInfo.ControlPoints.ForEach(c => c.VelocityAdjustment /= legacy_velocity_scale);
|
|
||||||
|
|
||||||
return new Beatmap<TaikoHitObject>(original)
|
return new Beatmap<TaikoHitObject>(original)
|
||||||
{
|
{
|
||||||
@ -73,7 +71,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
{
|
{
|
||||||
StartTime = obj.StartTime,
|
StartTime = obj.StartTime,
|
||||||
Sample = obj.Sample,
|
Sample = obj.Sample,
|
||||||
IsStrong = strong
|
IsStrong = strong,
|
||||||
|
VelocityMultiplier = legacy_velocity_scale
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -85,7 +84,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
Sample = obj.Sample,
|
Sample = obj.Sample,
|
||||||
IsStrong = strong,
|
IsStrong = strong,
|
||||||
Distance = distanceData.Distance * (repeatsData?.RepeatCount ?? 1) * legacy_velocity_scale,
|
Distance = distanceData.Distance * (repeatsData?.RepeatCount ?? 1) * legacy_velocity_scale,
|
||||||
TickRate = beatmap.BeatmapInfo.Difficulty.SliderTickRate == 3 ? 3 : 4
|
TickRate = beatmap.BeatmapInfo.Difficulty.SliderTickRate == 3 ? 3 : 4,
|
||||||
|
VelocityMultiplier = legacy_velocity_scale
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -98,9 +98,9 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
StartTime = obj.StartTime,
|
StartTime = obj.StartTime,
|
||||||
Sample = obj.Sample,
|
Sample = obj.Sample,
|
||||||
IsStrong = strong,
|
IsStrong = strong,
|
||||||
|
|
||||||
EndTime = endTimeData.EndTime,
|
EndTime = endTimeData.EndTime,
|
||||||
RequiredHits = (int)Math.Max(1, endTimeData.Duration / 1000 * hitMultiplier)
|
RequiredHits = (int)Math.Max(1, endTimeData.Duration / 1000 * hitMultiplier),
|
||||||
|
VelocityMultiplier = legacy_velocity_scale
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -113,7 +113,8 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
{
|
{
|
||||||
StartTime = obj.StartTime,
|
StartTime = obj.StartTime,
|
||||||
Sample = obj.Sample,
|
Sample = obj.Sample,
|
||||||
IsStrong = strong
|
IsStrong = strong,
|
||||||
|
VelocityMultiplier = legacy_velocity_scale
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -123,6 +124,7 @@ namespace osu.Game.Modes.Taiko.Beatmaps
|
|||||||
StartTime = obj.StartTime,
|
StartTime = obj.StartTime,
|
||||||
Sample = obj.Sample,
|
Sample = obj.Sample,
|
||||||
IsStrong = strong,
|
IsStrong = strong,
|
||||||
|
VelocityMultiplier = legacy_velocity_scale
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ namespace osu.Game.Modes.Taiko.Objects
|
|||||||
{
|
{
|
||||||
base.ApplyDefaults(timing, difficulty);
|
base.ApplyDefaults(timing, difficulty);
|
||||||
|
|
||||||
Velocity = base_distance * difficulty.SliderMultiplier * difficulty.SliderTickRate * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime);
|
Velocity = base_distance * difficulty.SliderMultiplier * VelocityMultiplier / timing.BeatLengthAt(StartTime);
|
||||||
tickSpacing = timing.BeatLengthAt(StartTime) / TickRate;
|
tickSpacing = timing.BeatLengthAt(StartTime) / TickRate;
|
||||||
|
|
||||||
RequiredGoodHits = TotalTicks * Math.Min(0.15, 0.05 + 0.10 / 6 * difficulty.OverallDifficulty);
|
RequiredGoodHits = TotalTicks * Math.Min(0.15, 0.05 + 0.10 / 6 * difficulty.OverallDifficulty);
|
||||||
|
@ -19,6 +19,11 @@ namespace osu.Game.Modes.Taiko.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private const double base_scroll_time = 6000;
|
private const double base_scroll_time = 6000;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The velocity multiplier applied to this hit object.
|
||||||
|
/// </summary>
|
||||||
|
public float VelocityMultiplier = 1;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The time to scroll in the HitObject.
|
/// The time to scroll in the HitObject.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -39,7 +44,7 @@ namespace osu.Game.Modes.Taiko.Objects
|
|||||||
{
|
{
|
||||||
base.ApplyDefaults(timing, difficulty);
|
base.ApplyDefaults(timing, difficulty);
|
||||||
|
|
||||||
PreEmpt = base_scroll_time / difficulty.SliderMultiplier * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / 1000;
|
PreEmpt = base_scroll_time / difficulty.SliderMultiplier * timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / VelocityMultiplier / 1000;
|
||||||
|
|
||||||
ControlPoint overridePoint;
|
ControlPoint overridePoint;
|
||||||
Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;
|
Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;
|
||||||
|
Loading…
Reference in New Issue
Block a user