mirror of
https://github.com/ppy/osu.git
synced 2024-12-13 03:42:57 +08:00
Move constant local to taiko
This commit is contained in:
parent
8a0d152bcf
commit
1b50d1011a
@ -12,13 +12,23 @@ using osu.Framework.Utils;
|
||||
using System.Threading;
|
||||
using osu.Game.Audio;
|
||||
using osu.Game.Beatmaps.ControlPoints;
|
||||
using osu.Game.Beatmaps.Formats;
|
||||
using osu.Game.Rulesets.Objects.Legacy;
|
||||
|
||||
namespace osu.Game.Rulesets.Taiko.Beatmaps
|
||||
{
|
||||
internal class TaikoBeatmapConverter : BeatmapConverter<TaikoHitObject>
|
||||
{
|
||||
/// <summary>
|
||||
/// A speed multiplier applied globally to osu!taiko.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// osu! is generally slower than taiko, so a factor was historically added to increase speed for converts.
|
||||
/// This must be used everywhere slider length or beat length is used in taiko.
|
||||
///
|
||||
/// Of note, this has never been exposed to the end user, and is considered a hidden internal multiplier.
|
||||
/// </remarks>
|
||||
public const float VELOCITY_MULTIPLIER = 1.4f;
|
||||
|
||||
/// <summary>
|
||||
/// Because swells are easier in taiko than spinners are in osu!,
|
||||
/// legacy taiko multiplies a factor when converting the number of required hits.
|
||||
@ -173,7 +183,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
||||
double distance = pathData.Path.ExpectedDistance.Value ?? 0;
|
||||
|
||||
// Do not combine the following two lines!
|
||||
distance *= LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER;
|
||||
distance *= VELOCITY_MULTIPLIER;
|
||||
distance *= spans;
|
||||
|
||||
TimingControlPoint timingPoint = beatmap.ControlPointInfo.TimingPointAt(obj.StartTime);
|
||||
@ -185,7 +195,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
||||
else
|
||||
beatLength = timingPoint.BeatLength;
|
||||
|
||||
double sliderScoringPointDistance = osu_base_scoring_distance * (beatmap.Difficulty.SliderMultiplier * LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER) / beatmap.Difficulty.SliderTickRate;
|
||||
double sliderScoringPointDistance = osu_base_scoring_distance * (beatmap.Difficulty.SliderMultiplier * TaikoBeatmapConverter.VELOCITY_MULTIPLIER) / beatmap.Difficulty.SliderTickRate;
|
||||
|
||||
// The velocity and duration of the taiko hit object - calculated as the velocity of a drum roll.
|
||||
double taikoVelocity = sliderScoringPointDistance * beatmap.Difficulty.SliderTickRate;
|
||||
|
@ -1,14 +1,14 @@
|
||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||
// See the LICENCE file in the repository root for full licence text.
|
||||
|
||||
using osu.Game.Rulesets.Objects.Types;
|
||||
using System.Threading;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Beatmaps.ControlPoints;
|
||||
using osu.Game.Beatmaps.Formats;
|
||||
using osu.Game.Rulesets.Judgements;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
using osu.Game.Rulesets.Objects.Types;
|
||||
using osu.Game.Rulesets.Scoring;
|
||||
using osu.Game.Rulesets.Taiko.Beatmaps;
|
||||
using osuTK;
|
||||
|
||||
namespace osu.Game.Rulesets.Taiko.Objects
|
||||
@ -51,7 +51,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
||||
TimingControlPoint timingPoint = controlPointInfo.TimingPointAt(StartTime);
|
||||
EffectControlPoint effectPoint = controlPointInfo.EffectPointAt(StartTime);
|
||||
|
||||
double scoringDistance = base_distance * (difficulty.SliderMultiplier * LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER) * effectPoint.ScrollSpeed;
|
||||
double scoringDistance = base_distance * (difficulty.SliderMultiplier * TaikoBeatmapConverter.VELOCITY_MULTIPLIER) * effectPoint.ScrollSpeed;
|
||||
Velocity = scoringDistance / timingPoint.BeatLength;
|
||||
|
||||
TickRate = difficulty.SliderTickRate == 3 ? 3 : 4;
|
||||
@ -116,7 +116,7 @@ namespace osu.Game.Rulesets.Taiko.Objects
|
||||
double IHasDistance.Distance => Duration * Velocity;
|
||||
|
||||
SliderPath IHasPath.Path
|
||||
=> new SliderPath(PathType.LINEAR, new[] { Vector2.Zero, new Vector2(1) }, ((IHasDistance)this).Distance / LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER);
|
||||
=> new SliderPath(PathType.LINEAR, new[] { Vector2.Zero, new Vector2(1) }, ((IHasDistance)this).Distance / TaikoBeatmapConverter.VELOCITY_MULTIPLIER);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
@ -10,13 +10,13 @@ using osu.Framework.Bindables;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Input;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Beatmaps.Formats;
|
||||
using osu.Game.Configuration;
|
||||
using osu.Game.Input.Handlers;
|
||||
using osu.Game.Replays;
|
||||
using osu.Game.Rulesets.Mods;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
using osu.Game.Rulesets.Objects.Drawables;
|
||||
using osu.Game.Rulesets.Taiko.Beatmaps;
|
||||
using osu.Game.Rulesets.Taiko.Objects;
|
||||
using osu.Game.Rulesets.Taiko.Replays;
|
||||
using osu.Game.Rulesets.Timing;
|
||||
@ -71,7 +71,7 @@ namespace osu.Game.Rulesets.Taiko.UI
|
||||
protected virtual double ComputeTimeRange()
|
||||
{
|
||||
// Taiko scrolls at a constant 100px per 1000ms. More notes become visible as the playfield is lengthened.
|
||||
const float scroll_rate = 10 / LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER;
|
||||
const float scroll_rate = 10 / TaikoBeatmapConverter.VELOCITY_MULTIPLIER;
|
||||
|
||||
// Since the time range will depend on a positional value, it is referenced to the x480 pixel space.
|
||||
// Width is used because it defines how many notes fit on the playfield.
|
||||
|
@ -23,12 +23,6 @@ namespace osu.Game.Beatmaps.Formats
|
||||
{
|
||||
public const int FIRST_LAZER_VERSION = 128;
|
||||
|
||||
/// <summary>
|
||||
/// osu! is generally slower than taiko, so a factor is added to increase
|
||||
/// speed. This must be used everywhere slider length or beat length is used.
|
||||
/// </summary>
|
||||
public const float LEGACY_TAIKO_VELOCITY_MULTIPLIER = 1.4f;
|
||||
|
||||
private readonly IBeatmap beatmap;
|
||||
|
||||
private readonly ISkin? skin;
|
||||
|
Loading…
Reference in New Issue
Block a user