diff --git a/Content.Client/GameObjects/Components/Storage/ClientStorageComponent.cs b/Content.Client/GameObjects/Components/Storage/ClientStorageComponent.cs
index 72d3df22e4..9878fc0767 100644
--- a/Content.Client/GameObjects/Components/Storage/ClientStorageComponent.cs
+++ b/Content.Client/GameObjects/Components/Storage/ClientStorageComponent.cs
@@ -27,6 +27,16 @@ namespace Content.Client.GameObjects.Components.Storage
private int StorageCapacityMax;
private StorageWindow Window;
+ public bool Open
+ {
+ get => _open;
+ set
+ {
+ _open = value;
+ SetDoorSprite(_open);
+ }
+ }
+
public override void OnAdd()
{
base.OnAdd();
@@ -41,6 +51,17 @@ namespace Content.Client.GameObjects.Components.Storage
base.OnRemove();
}
+ ///
+ public override void HandleComponentState(ComponentState state)
+ {
+ base.HandleComponentState(state);
+
+ if (!(state is StorageComponentState storageState))
+ return;
+
+ Open = storageState.Open;
+ }
+
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
{
switch (message)
@@ -54,7 +75,7 @@ namespace Content.Client.GameObjects.Components.Storage
OpenUI();
break;
case CloseStorageUIMessage msg:
- // todo: close window/grey it out
+ CloseUI();
break;
}
}
@@ -80,6 +101,11 @@ namespace Content.Client.GameObjects.Components.Storage
Window.Open();
}
+ private void CloseUI()
+ {
+ Window.Close();
+ }
+
///
/// Function for clicking one of the stored entity buttons in the UI, tells server to remove that entity
///
@@ -89,6 +115,22 @@ namespace Content.Client.GameObjects.Components.Storage
SendNetworkMessage(new RemoveEntityMessage(entityuid));
}
+ private void SetDoorSprite(bool open)
+ {
+ if(!Owner.TryGetComponent(out var spriteComp))
+ return;
+
+ if(!spriteComp.Running)
+ return;
+
+ var baseName = spriteComp.LayerGetState(0).Name;
+
+ var stateId = open ? $"{baseName}_open" : $"{baseName}_door";
+
+ if (spriteComp.BaseRSI.TryGetState(stateId, out _))
+ spriteComp.LayerSetState(1, stateId);
+ }
+
///
/// GUI class for client storage component
///
@@ -113,6 +155,12 @@ namespace Content.Client.GameObjects.Components.Storage
Information = VSplitContainer.GetChild