From dffd02adb161f8299e858fb6c0c2eb71e595e21f Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:17:56 -0800 Subject: [PATCH] Syringe UI cached updates (#25581) Injector status UI cached values Co-authored-by: Plykiya --- .../Chemistry/UI/InjectorStatusControl.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Content.Client/Chemistry/UI/InjectorStatusControl.cs b/Content.Client/Chemistry/UI/InjectorStatusControl.cs index 979e9ea645..9cb699330c 100644 --- a/Content.Client/Chemistry/UI/InjectorStatusControl.cs +++ b/Content.Client/Chemistry/UI/InjectorStatusControl.cs @@ -2,6 +2,7 @@ using Content.Client.Message; using Content.Client.Stylesheets; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.FixedPoint; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Timing; @@ -14,6 +15,10 @@ public sealed class InjectorStatusControl : Control private readonly SharedSolutionContainerSystem _solutionContainers; private readonly RichTextLabel _label; + private FixedPoint2 PrevVolume; + private FixedPoint2 PrevMaxVolume; + private InjectorToggleMode PrevToggleState; + public InjectorStatusControl(Entity parent, SharedSolutionContainerSystem solutionContainers) { _parent = parent; @@ -29,6 +34,16 @@ public sealed class InjectorStatusControl : Control if (!_solutionContainers.TryGetSolution(_parent.Owner, InjectorComponent.SolutionName, out _, out var solution)) return; + // only updates the UI if any of the details are different than they previously were + if (PrevVolume == solution.Volume + && PrevMaxVolume == solution.MaxVolume + && PrevToggleState == _parent.Comp.ToggleState) + return; + + PrevVolume = solution.Volume; + PrevMaxVolume = solution.MaxVolume; + PrevToggleState = _parent.Comp.ToggleState; + // Update current volume and injector state var modeStringLocalized = Loc.GetString(_parent.Comp.ToggleState switch {