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)
{
ToggleComponent(ent, args.Activated);
}
// Goobstation - Make this system more flexible
public void ToggleComponent(EntityUid uid, bool activate)
{
if (!TryComp(uid, out var component))
return;
var target = component.Parent ? Transform(uid).ParentUid : uid;
if (activate)
EntityManager.AddComponents(target, component.Components);
else
EntityManager.RemoveComponents(target, component.RemoveComponents ?? component.Components);
}
}