From 629e64d50aa712d226480fe6c91c3ad933bb6a04 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Mon, 4 Dec 2023 23:55:31 +0300 Subject: [PATCH] Fix `ArgonHealthDisplay` not displaying miss correctly during initial transition --- osu.Game/Screens/Play/HUD/ArgonHealthDisplay.cs | 7 +++++++ osu.Game/Screens/Play/HUD/HealthDisplay.cs | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/osu.Game/Screens/Play/HUD/ArgonHealthDisplay.cs b/osu.Game/Screens/Play/HUD/ArgonHealthDisplay.cs index 2bef6c312f..de591cdb31 100644 --- a/osu.Game/Screens/Play/HUD/ArgonHealthDisplay.cs +++ b/osu.Game/Screens/Play/HUD/ArgonHealthDisplay.cs @@ -204,6 +204,13 @@ namespace osu.Game.Screens.Play.HUD glowBar.Alpha = (float)Interpolation.DampContinuously(glowBar.Alpha, GlowBarValue > 0 ? 1 : 0, 40, Time.Elapsed); } + protected override void FinishInitialAnimation(double value) + { + base.FinishInitialAnimation(value); + this.TransformTo(nameof(HealthBarValue), value, 500, Easing.OutQuint); + this.TransformTo(nameof(GlowBarValue), value, 250, Easing.OutQuint); + } + protected override void Flash() { base.Flash(); diff --git a/osu.Game/Screens/Play/HUD/HealthDisplay.cs b/osu.Game/Screens/Play/HUD/HealthDisplay.cs index 13dc05229e..7747036826 100644 --- a/osu.Game/Screens/Play/HUD/HealthDisplay.cs +++ b/osu.Game/Screens/Play/HUD/HealthDisplay.cs @@ -58,7 +58,9 @@ namespace osu.Game.Screens.Play.HUD health = HealthProcessor.Health.GetBoundCopy(); health.BindValueChanged(h => { - finishInitialAnimation(); + if (initialIncrease != null) + FinishInitialAnimation(h.OldValue); + Current.Value = h.NewValue; }); @@ -90,16 +92,16 @@ namespace osu.Game.Screens.Play.HUD Scheduler.AddOnce(Flash); if (newValue >= health.Value) - finishInitialAnimation(); + FinishInitialAnimation(health.Value); }, increase_delay, true); } - private void finishInitialAnimation() + protected virtual void FinishInitialAnimation(double value) { if (initialIncrease == null) return; - initialIncrease?.Cancel(); + initialIncrease.Cancel(); initialIncrease = null; // aside from the repeating `initialIncrease` scheduled task,