Skip to content

Commit 303aeda

Browse files
committed
Fix keybinds bypassing button click events
1 parent 8ed4355 commit 303aeda

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

MiraAPI/Hud/CustomActionButton.cs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,39 @@ public virtual void CreateButton(Transform parent)
211211
{
212212
if (Enabled(PlayerControl.LocalPlayer.Data.Role))
213213
{
214-
ClickHandler();
214+
// Invoke the generic button click event.
215+
var genericEvent = new MiraButtonClickEvent(this);
216+
MiraEventManager.InvokeEvent(genericEvent);
217+
if (genericEvent.IsCancelled)
218+
{
219+
MiraEventManager.InvokeEvent(new MiraButtonCancelledEvent(this));
220+
}
221+
222+
// Invoke the button click event for specific button.
223+
var eventType = CustomButtonManager.ButtonEventTypes[GetType()];
224+
var @event = (MiraCancelableEvent)Activator.CreateInstance(eventType, this, genericEvent)!;
225+
var specificInvoked = MiraEventManager.InvokeEvent(@event, eventType);
226+
if (@event.IsCancelled)
227+
{
228+
var cancelEventType = CustomButtonManager.ButtonCancelledEventTypes[GetType()];
229+
var cancelEvent = (MiraEvent)Activator.CreateInstance(cancelEventType, this)!;
230+
MiraEventManager.InvokeEvent(cancelEvent, cancelEventType);
231+
}
232+
233+
if (specificInvoked)
234+
{
235+
if (!@event.IsCancelled)
236+
{
237+
ClickHandler();
238+
}
239+
}
240+
else
241+
{
242+
if (!genericEvent.IsCancelled)
243+
{
244+
ClickHandler();
245+
}
246+
}
215247
}
216248
});
217249

0 commit comments

Comments
 (0)