Files
Delta-v/Content.Shared/Item/ItemToggle/ComponentTogglerSystem.cs
T
Sir Warockandpre-commit-ci[bot] d2539322ed Improve Operating Tables (#4333)
* Improve Operating Tables

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* There is no god. We suffer.

* Add Anesthesia Component to Optable

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Less shitified code

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* GoodCode™️

* Rename Systemfile

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-08 11:56:03 +00:00

52 lines
1.6 KiB
C#

using Content.Shared.Item.ItemToggle.Components;
namespace Content.Shared.Item.ItemToggle;
/// <summary>
/// Handles <see cref="ComponentTogglerComponent"/> component manipulation.
/// </summary>
public sealed class ComponentTogglerSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ComponentTogglerComponent, ItemToggledEvent>(OnToggled);
}
private void OnToggled(Entity<ComponentTogglerComponent> 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
}
}
}