From: DrSmugleaf Date: Wed, 20 Dec 2023 00:38:03 +0000 (-0800) Subject: Fix item cabinet's visual state desyncing when toggled by a different client in view... X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=edceb55119f2e89dce4b68bccb9b76b2fce92030;p=space-station-14.git Fix item cabinet's visual state desyncing when toggled by a different client in view (#22759) Fix item cabinet's visual state desyncing when opened by a different client in view --- diff --git a/Content.Shared/Cabinet/ItemCabinetComponent.cs b/Content.Shared/Cabinet/ItemCabinetComponent.cs index 71367e8de6..dcc276e565 100644 --- a/Content.Shared/Cabinet/ItemCabinetComponent.cs +++ b/Content.Shared/Cabinet/ItemCabinetComponent.cs @@ -7,7 +7,7 @@ namespace Content.Shared.Cabinet; /// /// Used for entities that can be opened, closed, and can hold one item. E.g., fire extinguisher cabinets. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class ItemCabinetComponent : Component { /// diff --git a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs index 92af6a4f8a..ca496814c7 100644 --- a/Content.Shared/Cabinet/SharedItemCabinetSystem.cs +++ b/Content.Shared/Cabinet/SharedItemCabinetSystem.cs @@ -22,6 +22,7 @@ public abstract class SharedItemCabinetSystem : EntitySystem SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnComponentRemove); SubscribeLocalEvent(OnComponentStartup); + SubscribeLocalEvent(OnComponentHandleState); SubscribeLocalEvent(OnActivateInWorld); SubscribeLocalEvent>(AddToggleOpenVerb); @@ -48,6 +49,11 @@ public abstract class SharedItemCabinetSystem : EntitySystem _itemSlots.SetLock(uid, cabinet.CabinetSlot, !cabinet.Opened); } + private void OnComponentHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + UpdateAppearance(ent, ent); + } + protected virtual void UpdateAppearance(EntityUid uid, ItemCabinetComponent? cabinet = null) { // we don't fuck with appearance data, and instead just manually update the sprite on the client