From 0a292634be2c4c22a26dae08a85041e9a0c0206f Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 7 Jul 2020 00:49:14 +0200 Subject: [PATCH] Add Shutdown override to EntityStorageComponent --- .../Items/Storage/EntityStorageComponent.cs | 60 +++++++++++-------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs index b83126759d..4532d767ef 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs @@ -120,6 +120,16 @@ namespace Content.Server.GameObjects.Components serializer.DataField(this, a => a.CanWeldShut, "CanWeldShut", true); } + protected override void Shutdown() + { + base.Shutdown(); + + foreach (var entity in _contents.ContainedEntities) + { + entity.RemoveComponent(); + } + } + public virtual void Activate(ActivateEventArgs eventArgs) { ToggleOpen(eventArgs.User); @@ -355,6 +365,31 @@ namespace Content.Server.GameObjects.Components return _contents.CanInsert(entity); } + bool IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + + if (Open) + return false; + + if (!CanWeldShut) + return false; + + if (!eventArgs.Using.TryGetComponent(out WelderComponent tool)) + return false; + + if (!tool.UseTool(eventArgs.User, Owner, ToolQuality.Welding, 1f)) + return false; + + IsWeldedShut ^= true; + return true; + } + + void IDestroyAct.OnDestroy(DestructionEventArgs eventArgs) + { + Open = true; + EmptyContents(); + } + [Verb] private sealed class OpenToggleVerb : Verb { @@ -394,30 +429,5 @@ namespace Content.Server.GameObjects.Components data.Text = component.Open ? "Close" : "Open"; } - - public bool InteractUsing(InteractUsingEventArgs eventArgs) - { - - if (Open) - return false; - - if (!CanWeldShut) - return false; - - if (!eventArgs.Using.TryGetComponent(out WelderComponent tool)) - return false; - - if (!tool.UseTool(eventArgs.User, Owner, ToolQuality.Welding, 1f)) - return false; - - IsWeldedShut ^= true; - return true; - } - - public void OnDestroy(DestructionEventArgs eventArgs) - { - Open = true; - EmptyContents(); - } } }