mirror of
https://github.com/ppy/osu.git
synced 2025-03-15 01:27:20 +08:00
Extract preempt durations to shared constants
This commit is contained in:
parent
c0e68df20f
commit
605269f65f
@ -242,9 +242,9 @@ namespace osu.Game.Rulesets.Catch
|
|||||||
{
|
{
|
||||||
BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
|
BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
|
||||||
|
|
||||||
double preempt = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.ApproachRate, 1800, 1200, 450);
|
double preempt = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.ApproachRate, CatchHitObject.PREEMPT_MAX, CatchHitObject.PREEMPT_MID, CatchHitObject.PREEMPT_MIN);
|
||||||
preempt /= rate;
|
preempt /= rate;
|
||||||
adjustedDifficulty.ApproachRate = (float)IBeatmapDifficultyInfo.InverseDifficultyRange(preempt, 1800, 1200, 450);
|
adjustedDifficulty.ApproachRate = (float)IBeatmapDifficultyInfo.InverseDifficultyRange(preempt, CatchHitObject.PREEMPT_MAX, CatchHitObject.PREEMPT_MID, CatchHitObject.PREEMPT_MIN);
|
||||||
|
|
||||||
return adjustedDifficulty;
|
return adjustedDifficulty;
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
{
|
{
|
||||||
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
||||||
|
|
||||||
TimePreempt = (float)IBeatmapDifficultyInfo.DifficultyRange(difficulty.ApproachRate, 1800, 1200, 450);
|
TimePreempt = (float)IBeatmapDifficultyInfo.DifficultyRange(difficulty.ApproachRate, PREEMPT_MAX, PREEMPT_MID, PREEMPT_MIN);
|
||||||
|
|
||||||
Scale = LegacyRulesetExtensions.CalculateScaleFromCircleSize(difficulty.CircleSize);
|
Scale = LegacyRulesetExtensions.CalculateScaleFromCircleSize(difficulty.CircleSize);
|
||||||
}
|
}
|
||||||
@ -189,6 +189,21 @@ namespace osu.Game.Rulesets.Catch.Objects
|
|||||||
// The half of the height of the osu! playfield.
|
// The half of the height of the osu! playfield.
|
||||||
public const float DEFAULT_LEGACY_CONVERT_Y = 192;
|
public const float DEFAULT_LEGACY_CONVERT_Y = 192;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Minimum preempt time at AR=10.
|
||||||
|
/// </summary>
|
||||||
|
public const double PREEMPT_MIN = 450;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Median preempt time at AR=5.
|
||||||
|
/// </summary>
|
||||||
|
public const double PREEMPT_MID = 1200;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Maximum preempt time at AR=0.
|
||||||
|
/// </summary>
|
||||||
|
public const double PREEMPT_MAX = 1800;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The Y position of the hit object is not used in the normal osu!catch gameplay.
|
/// The Y position of the hit object is not used in the normal osu!catch gameplay.
|
||||||
/// It is preserved to maximize the backward compatibility with the legacy editor, in which the mappers use the Y position to organize the patterns.
|
/// It is preserved to maximize the backward compatibility with the legacy editor, in which the mappers use the Y position to organize the patterns.
|
||||||
|
@ -37,6 +37,16 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const double PREEMPT_MIN = 450;
|
public const double PREEMPT_MIN = 450;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Median preempt time at AR=5.
|
||||||
|
/// </summary>
|
||||||
|
public const double PREEMPT_MID = 1200;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Maximum preempt time at AR=0.
|
||||||
|
/// </summary>
|
||||||
|
public const double PREEMPT_MAX = 1800;
|
||||||
|
|
||||||
public double TimePreempt = 600;
|
public double TimePreempt = 600;
|
||||||
public double TimeFadeIn = 400;
|
public double TimeFadeIn = 400;
|
||||||
|
|
||||||
@ -148,7 +158,7 @@ namespace osu.Game.Rulesets.Osu.Objects
|
|||||||
{
|
{
|
||||||
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
base.ApplyDefaultsToSelf(controlPointInfo, difficulty);
|
||||||
|
|
||||||
TimePreempt = (float)IBeatmapDifficultyInfo.DifficultyRange(difficulty.ApproachRate, 1800, 1200, PREEMPT_MIN);
|
TimePreempt = (float)IBeatmapDifficultyInfo.DifficultyRange(difficulty.ApproachRate, PREEMPT_MAX, PREEMPT_MID, PREEMPT_MIN);
|
||||||
|
|
||||||
// Preempt time can go below 450ms. Normally, this is achieved via the DT mod which uniformly speeds up all animations game wide regardless of AR.
|
// Preempt time can go below 450ms. Normally, this is achieved via the DT mod which uniformly speeds up all animations game wide regardless of AR.
|
||||||
// This uniform speedup is hard to match 1:1, however we can at least make AR>10 (via mods) feel good by extending the upper linear function above.
|
// This uniform speedup is hard to match 1:1, however we can at least make AR>10 (via mods) feel good by extending the upper linear function above.
|
||||||
|
@ -338,9 +338,9 @@ namespace osu.Game.Rulesets.Osu
|
|||||||
{
|
{
|
||||||
BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
|
BeatmapDifficulty adjustedDifficulty = new BeatmapDifficulty(difficulty);
|
||||||
|
|
||||||
double preempt = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.ApproachRate, 1800, 1200, 450);
|
double preempt = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.ApproachRate, OsuHitObject.PREEMPT_MAX, OsuHitObject.PREEMPT_MID, OsuHitObject.PREEMPT_MIN);
|
||||||
preempt /= rate;
|
preempt /= rate;
|
||||||
adjustedDifficulty.ApproachRate = (float)IBeatmapDifficultyInfo.InverseDifficultyRange(preempt, 1800, 1200, 450);
|
adjustedDifficulty.ApproachRate = (float)IBeatmapDifficultyInfo.InverseDifficultyRange(preempt, OsuHitObject.PREEMPT_MAX, OsuHitObject.PREEMPT_MID, OsuHitObject.PREEMPT_MIN);
|
||||||
|
|
||||||
double greatHitWindow = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.OverallDifficulty, 80, 50, 20);
|
double greatHitWindow = IBeatmapDifficultyInfo.DifficultyRange(adjustedDifficulty.OverallDifficulty, 80, 50, 20);
|
||||||
greatHitWindow /= rate;
|
greatHitWindow /= rate;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user