private void InitializeInteraction()
{
SubscribeLocalEvent<StrapComponent, GetVerbsEvent<InteractionVerb>>(AddStrapVerbs);
- SubscribeLocalEvent<StrapComponent, InteractHandEvent>(OnStrapInteractHand);
+ SubscribeLocalEvent<StrapComponent, InteractHandEvent>(OnStrapInteractHand, after: [typeof(InteractionPopupSystem)]);
SubscribeLocalEvent<StrapComponent, DragDropTargetEvent>(OnStrapDragDropTarget);
SubscribeLocalEvent<StrapComponent, CanDropTargetEvent>(OnCanDropTarget);
+ SubscribeLocalEvent<BuckleComponent, InteractHandEvent>(OnBuckleInteractHand, after: [typeof(InteractionPopupSystem)]);
SubscribeLocalEvent<BuckleComponent, GetVerbsEvent<InteractionVerb>>(AddUnbuckleVerb);
}
if (args.Handled)
return;
+ if (!component.Enabled)
+ return;
+
if (!TryComp(args.User, out BuckleComponent? buckle))
return;
else
return;
- args.Handled = true; // This generate popups on failure.
+ // TODO BUCKLE add out bool for whether a pop-up was generated or not.
+ args.Handled = true;
+ }
+
+ private void OnBuckleInteractHand(Entity<BuckleComponent> ent, ref InteractHandEvent args)
+ {
+ if (args.Handled)
+ return;
+
+ if (ent.Comp.BuckledTo != null)
+ TryUnbuckle(ent!, args.User, popup: true);
+
+ // TODO BUCKLE add out bool for whether a pop-up was generated or not.
+ args.Handled = true;
}
private void AddStrapVerbs(EntityUid uid, StrapComponent component, GetVerbsEvent<InteractionVerb> args)