using Content.Shared.Buckle.Components; using Content.Shared.Trigger.Components.Triggers; namespace Content.Shared.Trigger.Systems; /// /// This is a system covering all trigger interactions involving strapping or buckling objects. /// The users of strap components are the objects having an entity strapped to them (IE: Chairs) /// The users of buckle components are entities being buckled to an object. (IE: Mobs and players) /// public sealed partial class TriggerOnStrappedOrBuckledSystem : TriggerOnXSystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnStrapped); SubscribeLocalEvent(OnUnstrapped); SubscribeLocalEvent(OnBuckled); SubscribeLocalEvent(OnUnbuckled); } #region Class Methods // Called by objects entities can be buckled to. (Chairs, surgical tables/) private void OnStrapped(Entity ent, ref StrappedEvent args) { Trigger.Trigger(ent.Owner, args.Strap, ent.Comp.KeyOut); } private void OnUnstrapped(Entity ent, ref UnstrappedEvent args) { Trigger.Trigger(ent.Owner, args.Strap, ent.Comp.KeyOut); } // Called by entities that are buckled to an object. (Mobs, players.) private void OnBuckled(Entity ent, ref BuckledEvent args) { Trigger.Trigger(ent.Owner, args.Buckle, ent.Comp.KeyOut); } private void OnUnbuckled(Entity ent, ref UnbuckledEvent args) { Trigger.Trigger(ent.Owner, args.Buckle, ent.Comp.KeyOut); } #endregion }