Files
tbd-station-14/Content.Shared/Trigger/Systems/ComponentsOnTriggerSystem.cs
Princess Cheeseballs c01ec294d0 Reduce Triggers Boilerplate. (#41086)
* Push 1

* cleanup + master merge

* launchontrigger

* A crumb of cleanup

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-10-25 00:00:55 +00:00

50 lines
1.6 KiB
C#

using Content.Shared.Trigger.Components.Effects;
namespace Content.Shared.Trigger.Systems;
public sealed partial class AddComponentsOnTriggerSystem : XOnTriggerSystem<AddComponentsOnTriggerComponent>
{
protected override void OnTrigger(Entity<AddComponentsOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args)
{
if (ent.Comp.TriggerOnce && ent.Comp.Triggered)
return;
EntityManager.AddComponents(target, ent.Comp.Components, ent.Comp.RemoveExisting);
ent.Comp.Triggered = true;
Dirty(ent);
args.Handled = true;
}
}
public sealed partial class RemoveComponentsOnTriggerSystem : XOnTriggerSystem<RemoveComponentsOnTriggerComponent>
{
protected override void OnTrigger(Entity<RemoveComponentsOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args)
{
if (ent.Comp.TriggerOnce && ent.Comp.Triggered)
return;
EntityManager.RemoveComponents(target, ent.Comp.Components);
ent.Comp.Triggered = true;
Dirty(ent);
args.Handled = true;
}
}
public sealed partial class ToggleComponentsOnTriggerSystem : XOnTriggerSystem<ToggleComponentsOnTriggerComponent>
{
protected override void OnTrigger(Entity<ToggleComponentsOnTriggerComponent> ent, EntityUid target, ref TriggerEvent args)
{
if (!ent.Comp.ComponentsAdded)
EntityManager.AddComponents(target, ent.Comp.Components, ent.Comp.RemoveExisting);
else
EntityManager.RemoveComponents(target, ent.Comp.Components);
ent.Comp.ComponentsAdded = !ent.Comp.ComponentsAdded;
Dirty(ent);
args.Handled = true;
}
}