diff --git a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterBar.cs b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterBar.cs index 982b5b9d12..b6a1af64da 100644 --- a/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterBar.cs +++ b/Content.Client/GameObjects/EntitySystems/DoAfter/DoAfterBar.cs @@ -56,23 +56,20 @@ namespace Content.Client.GameObjects.EntitySystems.DoAfter /// Is the cancellation bar red? /// private bool _flash = true; - + /// /// Last time we swapped the flash. /// private TimeSpan _lastFlash; - + /// /// How long each cancellation bar flash lasts in seconds. /// private const float FlashTime = 0.125f; - + private const int XPixelDiff = 20 * DoAfterBarScale; public const byte DoAfterBarScale = 2; - private static readonly Color StartColor = new Color(0.8f, 0.0f, 0.2f); // red - private static readonly Color EndColor = new Color(0.92f, 0.77f, 0.34f); // yellow - private static readonly Color CompletedColor = new Color(0.0f, 0.8f, 0.27f); // green public DoAfterBar() { @@ -108,28 +105,25 @@ namespace Content.Client.GameObjects.EntitySystems.DoAfter } color = new Color(1.0f, 0.0f, 0.0f, _flash ? 1.0f : 0.0f); - } + } else if (Ratio >= 1.0f) { - color = CompletedColor; + color = new Color(0f, 1f, 0f); } else { // lerp - color = new Color( - StartColor.R + (EndColor.R - StartColor.R) * Ratio, - StartColor.G + (EndColor.G - StartColor.G) * Ratio, - StartColor.B + (EndColor.B - StartColor.B) * Ratio, - StartColor.A); + var hue = (5f / 18f) * Ratio; + color = Color.FromHsv((hue, 1f, 0.75f, 1f)); } - + handle.UseShader(_shader); // If you want to make this less hard-coded be my guest var leftOffset = 2 * DoAfterBarScale; var box = new UIBox2i( - leftOffset, + leftOffset, -2 + 2 * DoAfterBarScale, - leftOffset + (int) (XPixelDiff * Ratio), + leftOffset + (int) (XPixelDiff * Ratio), -2); handle.DrawRect(box, color); } diff --git a/Content.Client/UserInterface/CooldownGraphic.cs b/Content.Client/UserInterface/CooldownGraphic.cs index a77972ab81..d281c73e99 100644 --- a/Content.Client/UserInterface/CooldownGraphic.cs +++ b/Content.Client/UserInterface/CooldownGraphic.cs @@ -27,29 +27,23 @@ namespace Content.Client.UserInterface /// Possible values range from 1 to -1, where 1 to 0 is a depleting circle animation and 0 to -1 is a blink animation. /// public float Progress { get; set; } - private static readonly Color StartColor = new Color(0.8f, 0.0f, 0.2f); // red - private static readonly Color EndColor = new Color(0.92f, 0.77f, 0.34f); // yellow - private static readonly Color CompletedColor = new Color(0.0f, 0.8f, 0.27f); // green protected override void Draw(DrawingHandleScreen handle) { - Span x = stackalloc float[10]; + Span x = new float[10]; Color color; var lerp = 1f - MathF.Abs(Progress); // for future bikeshedding purposes if (Progress >= 0f) { - color = new Color( - EndColor.R + (StartColor.R - EndColor.R) * Progress, - EndColor.G + (StartColor.G - EndColor.G) * Progress, - EndColor.B + (StartColor.B - EndColor.B) * Progress, - EndColor.A); + var hue = (5f / 18f) * lerp; + color = Color.FromHsv((hue, 0.75f, 0.75f, 0.50f)); } else { var alpha = MathHelper.Clamp(0.5f * lerp, 0f, 0.5f); - color = CompletedColor.WithAlpha(alpha); + color = new Color(1f, 1f, 1f, alpha); } _shader.SetParameter("progress", Progress);