diff --git a/osu.Game.Mode.Osu/Objects/Drawables/DrawableHitCircle.cs b/osu.Game.Mode.Osu/Objects/Drawables/DrawableHitCircle.cs index b916a7bc74..ebb5057a49 100644 --- a/osu.Game.Mode.Osu/Objects/Drawables/DrawableHitCircle.cs +++ b/osu.Game.Mode.Osu/Objects/Drawables/DrawableHitCircle.cs @@ -131,12 +131,7 @@ namespace osu.Game.Modes.Osu.Objects.Drawables FadeOut(TIME_FADEOUT); break; case ArmedState.Miss: - ring.FadeOut(); - circle.FadeOut(); - number.FadeOut(); - glow.FadeOut(); - - FadeOut(800); + FadeOut(TIME_FADEOUT / 5); break; case ArmedState.Hit: const double flash_in = 30; diff --git a/osu.Game.Mode.Osu/Objects/Drawables/DrawableSlider.cs b/osu.Game.Mode.Osu/Objects/Drawables/DrawableSlider.cs index 7ffd93e3dc..9f11a70a66 100644 --- a/osu.Game.Mode.Osu/Objects/Drawables/DrawableSlider.cs +++ b/osu.Game.Mode.Osu/Objects/Drawables/DrawableSlider.cs @@ -73,7 +73,11 @@ namespace osu.Game.Modes.Osu.Objects.Drawables if (repeat % 2 == 1) progress = 1 - progress; - bouncer2.Position = slider.Curve.PositionAt(body.SnakedAmount); + bouncer2.Position = slider.Curve.PositionAt(body.SnakedEnd); + + //todo: we probably want to reconsider this before adding scoring, but it looks and feels nice. + if (initialCircle.Judgement?.Result != HitResult.Hit) + initialCircle.Position = slider.Curve.PositionAt(body.SnakedStart); components.ForEach(c => c.UpdateProgress(progress, repeat)); } diff --git a/osu.Game.Mode.Osu/Objects/Drawables/Pieces/SliderBody.cs b/osu.Game.Mode.Osu/Objects/Drawables/Pieces/SliderBody.cs index 58a3147541..c4c1cae7b6 100644 --- a/osu.Game.Mode.Osu/Objects/Drawables/Pieces/SliderBody.cs +++ b/osu.Game.Mode.Osu/Objects/Drawables/Pieces/SliderBody.cs @@ -90,7 +90,8 @@ namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces snakingOut = config.GetBindable(OsuConfig.SnakingOutSliders); } - public double SnakedAmount { get; private set; } + public double SnakedEnd { get; private set; } + public double SnakedStart { get; private set; } private List currentCurve = new List(); private bool updateSnaking(double p0, double p1) @@ -123,23 +124,23 @@ namespace osu.Game.Modes.Osu.Objects.Drawables.Pieces public void UpdateProgress(double progress, int repeat) { - double start = 0; - double end = SnakedAmount = snakingIn ? MathHelper.Clamp((Time.Current - (slider.StartTime - DrawableOsuHitObject.TIME_PREEMPT)) / DrawableOsuHitObject.TIME_FADEIN, 0, 1) : 1; + SnakedStart = 0; + SnakedEnd = snakingIn ? MathHelper.Clamp((Time.Current - (slider.StartTime - DrawableOsuHitObject.TIME_PREEMPT)) / DrawableOsuHitObject.TIME_FADEIN, 0, 1) : 1; if (repeat >= slider.RepeatCount - 1) { if (Math.Min(repeat, slider.RepeatCount - 1) % 2 == 1) { - start = 0; - end = snakingOut ? progress : 1; + SnakedStart = 0; + SnakedEnd = snakingOut ? progress : 1; } else { - start = snakingOut ? progress : 0; + SnakedStart = snakingOut ? progress : 0; } } - SetRange(start, end); + SetRange(SnakedStart, SnakedEnd); } // --------------------------------------------- DO NOT MERGE THIS -----------------------------------------------------------------------