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