1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-06 04:13:11 +08:00

Make legacy slider ball fade out instantly

This commit is contained in:
goodtrailer 2022-07-01 18:21:03 -07:00
parent 0e0e9968ac
commit 76d4f86ca3

View File

@ -7,6 +7,8 @@ using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Osu.Objects.Drawables;
using osu.Game.Skinning; using osu.Game.Skinning;
using osuTK.Graphics; using osuTK.Graphics;
@ -18,6 +20,8 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
private readonly ISkin skin; private readonly ISkin skin;
private DrawableSlider slider;
private Sprite layerNd; private Sprite layerNd;
private Sprite layerSpec; private Sprite layerSpec;
@ -30,8 +34,10 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(DrawableHitObject dho)
{ {
slider = (DrawableSlider)dho;
var ballColour = skin.GetConfig<OsuSkinColour, Color4>(OsuSkinColour.SliderBall)?.Value ?? Color4.White; var ballColour = skin.GetConfig<OsuSkinColour, Color4>(OsuSkinColour.SliderBall)?.Value ?? Color4.White;
InternalChildren = new[] InternalChildren = new[]
@ -56,6 +62,8 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
Blending = BlendingParameters.Additive, Blending = BlendingParameters.Additive,
}, },
}; };
slider.ApplyCustomUpdateState += updateStateTransforms;
} }
protected override void UpdateAfterChildren() protected override void UpdateAfterChildren()
@ -68,5 +76,25 @@ namespace osu.Game.Rulesets.Osu.Skinning.Legacy
layerNd.Rotation = -appliedRotation; layerNd.Rotation = -appliedRotation;
layerSpec.Rotation = -appliedRotation; layerSpec.Rotation = -appliedRotation;
} }
private void updateStateTransforms(DrawableHitObject obj, ArmedState _)
{
if (obj is not DrawableSlider)
return;
using (BeginAbsoluteSequence(slider.StateUpdateTime))
this.FadeIn();
using (BeginAbsoluteSequence(slider.HitStateUpdateTime))
this.FadeOut();
}
protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
if (slider != null)
slider.ApplyCustomUpdateState -= updateStateTransforms;
}
} }
} }