Syringe UI cached updates (#25581)
Injector status UI cached values Co-authored-by: Plykiya <plykiya@protonmail.com>
This commit is contained in:
@@ -2,6 +2,7 @@ using Content.Client.Message;
|
|||||||
using Content.Client.Stylesheets;
|
using Content.Client.Stylesheets;
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
|
using Content.Shared.FixedPoint;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controls;
|
using Robust.Client.UserInterface.Controls;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
@@ -14,6 +15,10 @@ public sealed class InjectorStatusControl : Control
|
|||||||
private readonly SharedSolutionContainerSystem _solutionContainers;
|
private readonly SharedSolutionContainerSystem _solutionContainers;
|
||||||
private readonly RichTextLabel _label;
|
private readonly RichTextLabel _label;
|
||||||
|
|
||||||
|
private FixedPoint2 PrevVolume;
|
||||||
|
private FixedPoint2 PrevMaxVolume;
|
||||||
|
private InjectorToggleMode PrevToggleState;
|
||||||
|
|
||||||
public InjectorStatusControl(Entity<InjectorComponent> parent, SharedSolutionContainerSystem solutionContainers)
|
public InjectorStatusControl(Entity<InjectorComponent> parent, SharedSolutionContainerSystem solutionContainers)
|
||||||
{
|
{
|
||||||
_parent = parent;
|
_parent = parent;
|
||||||
@@ -29,6 +34,16 @@ public sealed class InjectorStatusControl : Control
|
|||||||
if (!_solutionContainers.TryGetSolution(_parent.Owner, InjectorComponent.SolutionName, out _, out var solution))
|
if (!_solutionContainers.TryGetSolution(_parent.Owner, InjectorComponent.SolutionName, out _, out var solution))
|
||||||
return;
|
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
|
// Update current volume and injector state
|
||||||
var modeStringLocalized = Loc.GetString(_parent.Comp.ToggleState switch
|
var modeStringLocalized = Loc.GetString(_parent.Comp.ToggleState switch
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user