From 487dd113b05aa54a8683f6be980a60f3e431d226 Mon Sep 17 00:00:00 2001 From: HoofedEar Date: Thu, 22 Feb 2024 03:26:02 -0800 Subject: [PATCH] Add RequiresGrid component (#23394) * saving working code * add checks for deletion --- .../RequiresGrid/RequiresGridComponent.cs | 11 +++++++ .../RequiresGrid/RequiresGridSystem.cs | 29 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Content.Server/RequiresGrid/RequiresGridComponent.cs create mode 100644 Content.Server/RequiresGrid/RequiresGridSystem.cs diff --git a/Content.Server/RequiresGrid/RequiresGridComponent.cs b/Content.Server/RequiresGrid/RequiresGridComponent.cs new file mode 100644 index 0000000000..0e956c9ad9 --- /dev/null +++ b/Content.Server/RequiresGrid/RequiresGridComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server.RequiresGrid; + +/// +/// Destroys an entity when they no longer are part of a Grid +/// +[RegisterComponent] +[Access(typeof(RequiresGridSystem))] +public sealed partial class RequiresGridComponent : Component +{ + +} diff --git a/Content.Server/RequiresGrid/RequiresGridSystem.cs b/Content.Server/RequiresGrid/RequiresGridSystem.cs new file mode 100644 index 0000000000..16a20c9a8a --- /dev/null +++ b/Content.Server/RequiresGrid/RequiresGridSystem.cs @@ -0,0 +1,29 @@ +using Content.Server.Destructible; + +namespace Content.Server.RequiresGrid; + +public sealed class RequiresGridSystem : EntitySystem +{ + [Dependency] private readonly DestructibleSystem _destructible = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEntParentChanged); + } + + private void OnEntParentChanged(EntityUid owner, RequiresGridComponent component, EntParentChangedMessage args) + { + if (args.OldParent == null) + return; + + if (args.Transform.GridUid != null) + return; + + if (TerminatingOrDeleted(owner)) + return; + + _destructible.DestroyEntity(owner); + } +}