mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 20:32:55 +08:00
Remove slider head circle movement (and remove setting from "classic" mod)
This commit is contained in:
parent
46126719eb
commit
e3e7a81ad9
@ -25,9 +25,6 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
[SettingSource("No slider head accuracy requirement", "Scores sliders proportionally to the number of ticks hit.")]
|
[SettingSource("No slider head accuracy requirement", "Scores sliders proportionally to the number of ticks hit.")]
|
||||||
public Bindable<bool> NoSliderHeadAccuracy { get; } = new BindableBool(true);
|
public Bindable<bool> NoSliderHeadAccuracy { get; } = new BindableBool(true);
|
||||||
|
|
||||||
[SettingSource("No slider head movement", "Pins slider heads at their starting position, regardless of time.")]
|
|
||||||
public Bindable<bool> NoSliderHeadMovement { get; } = new BindableBool(true);
|
|
||||||
|
|
||||||
[SettingSource("Apply classic note lock", "Applies note lock to the full hit window.")]
|
[SettingSource("Apply classic note lock", "Applies note lock to the full hit window.")]
|
||||||
public Bindable<bool> ClassicNoteLock { get; } = new BindableBool(true);
|
public Bindable<bool> ClassicNoteLock { get; } = new BindableBool(true);
|
||||||
|
|
||||||
@ -71,7 +68,6 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
switch (obj)
|
switch (obj)
|
||||||
{
|
{
|
||||||
case DrawableSliderHead head:
|
case DrawableSliderHead head:
|
||||||
head.TrackFollowCircle = !NoSliderHeadMovement.Value;
|
|
||||||
if (FadeHitCircleEarly.Value && !usingHiddenFading)
|
if (FadeHitCircleEarly.Value && !usingHiddenFading)
|
||||||
applyEarlyFading(head);
|
applyEarlyFading(head);
|
||||||
|
|
||||||
|
@ -3,11 +3,9 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Game.Rulesets.Objects.Types;
|
|
||||||
using osu.Game.Rulesets.Osu.UI;
|
using osu.Game.Rulesets.Osu.UI;
|
||||||
using osu.Game.Rulesets.Scoring;
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
|
||||||
@ -24,12 +22,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
|
|
||||||
public override bool DisplayResult => HitObject?.JudgeAsNormalHitCircle ?? base.DisplayResult;
|
public override bool DisplayResult => HitObject?.JudgeAsNormalHitCircle ?? base.DisplayResult;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Makes this <see cref="DrawableSliderHead"/> track the follow circle when the start time is reached.
|
|
||||||
/// If <c>false</c>, this <see cref="DrawableSliderHead"/> will be pinned to its initial position in the slider.
|
|
||||||
/// </summary>
|
|
||||||
public bool TrackFollowCircle = true;
|
|
||||||
|
|
||||||
private readonly IBindable<int> pathVersion = new Bindable<int>();
|
private readonly IBindable<int> pathVersion = new Bindable<int>();
|
||||||
|
|
||||||
protected override OsuSkinComponents CirclePieceComponent => OsuSkinComponents.SliderHeadHitCircle;
|
protected override OsuSkinComponents CirclePieceComponent => OsuSkinComponents.SliderHeadHitCircle;
|
||||||
@ -64,23 +56,6 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
|||||||
CheckHittable = (d, t, r) => DrawableSlider.CheckHittable?.Invoke(d, t, r) ?? ClickAction.Hit;
|
CheckHittable = (d, t, r) => DrawableSlider.CheckHittable?.Invoke(d, t, r) ?? ClickAction.Hit;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
|
||||||
{
|
|
||||||
base.Update();
|
|
||||||
|
|
||||||
Debug.Assert(Slider != null);
|
|
||||||
Debug.Assert(HitObject != null);
|
|
||||||
|
|
||||||
if (TrackFollowCircle)
|
|
||||||
{
|
|
||||||
double completionProgress = Math.Clamp((Time.Current - Slider.StartTime) / Slider.Duration, 0, 1);
|
|
||||||
|
|
||||||
//todo: we probably want to reconsider this before adding scoring, but it looks and feels nice.
|
|
||||||
if (!IsHit)
|
|
||||||
Position = Slider.CurvePositionAt(completionProgress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override HitResult ResultFor(double timeOffset)
|
protected override HitResult ResultFor(double timeOffset)
|
||||||
{
|
{
|
||||||
Debug.Assert(HitObject != null);
|
Debug.Assert(HitObject != null);
|
||||||
|
@ -46,22 +46,6 @@ namespace osu.Game.Rulesets.Osu.Skinning.Default
|
|||||||
|
|
||||||
BorderSize = skin.GetConfig<OsuSkinConfiguration, float>(OsuSkinConfiguration.SliderBorderSize)?.Value ?? 1;
|
BorderSize = skin.GetConfig<OsuSkinConfiguration, float>(OsuSkinConfiguration.SliderBorderSize)?.Value ?? 1;
|
||||||
BorderColour = skin.GetConfig<OsuSkinColour, Color4>(OsuSkinColour.SliderBorder)?.Value ?? Color4.White;
|
BorderColour = skin.GetConfig<OsuSkinColour, Color4>(OsuSkinColour.SliderBorder)?.Value ?? Color4.White;
|
||||||
|
|
||||||
drawableObject.HitObjectApplied += onHitObjectApplied;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onHitObjectApplied(DrawableHitObject obj)
|
|
||||||
{
|
|
||||||
var drawableSlider = (DrawableSlider)obj;
|
|
||||||
if (drawableSlider.HitObject == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// When not tracking the follow circle, unbind from the config and forcefully disable snaking out - it looks better that way.
|
|
||||||
if (!drawableSlider.HeadCircle.TrackFollowCircle)
|
|
||||||
{
|
|
||||||
SnakingOut.UnbindFrom(configSnakingOut);
|
|
||||||
SnakingOut.Value = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Color4 GetBodyAccentColour(ISkinSource skin, Color4 hitObjectAccentColour) =>
|
protected virtual Color4 GetBodyAccentColour(ISkinSource skin, Color4 hitObjectAccentColour) =>
|
||||||
|
Loading…
Reference in New Issue
Block a user