using Content.Shared.Item.ItemToggle.Components; namespace Content.Shared.Item.ItemToggle; /// /// Handles component manipulation. /// public sealed class ComponentTogglerSystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnToggled); } private void OnToggled(Entity ent, ref ItemToggledEvent args) { if (args.Activated) { var target = ent.Comp.Parent ? Transform(ent).ParentUid : ent.Owner; if (TerminatingOrDeleted(target)) return; ent.Comp.Target = target; // Begin DeltaV - allow swapping components if (ent.Comp.DeactivatedComponents is { } deactivatedComps) EntityManager.RemoveComponents(target, deactivatedComps); EntityManager.AddComponents(target, ent.Comp.Components); // End DeltaV } else { if (ent.Comp.Target == null) return; if (TerminatingOrDeleted(ent.Comp.Target.Value)) return; EntityManager.RemoveComponents(ent.Comp.Target.Value, ent.Comp.RemoveComponents ?? ent.Comp.Components); // Begin DeltaV - allow swapping components if (ent.Comp.DeactivatedComponents is { } reactivatedComps) EntityManager.AddComponents(ent.Comp.Target.Value, reactivatedComps); // End DeltaV } } }