public void AddEventHandler(string eventName, Element attachedTo, EventDelegate callbackDelegate) { if (!this.registeredEvents.ContainsKey(eventName)) { return; } var registeredEvent = this.registeredEvents[eventName]; var registeredEventHandler = new RegisteredEventHandler() { EventName = eventName, RegisteredEvent = registeredEvent, Delegate = callbackDelegate, Element = attachedTo, }; this.registeredEventHandlers.Add(registeredEventHandler); foreach (var element in this.elementCollection.GetAll()) { if (registeredEvent.ElementType.IsAssignableFrom(element.GetType())) { var actions = (EventHandlerActions <Element>)registeredEvent.Delegate.DynamicInvoke(element, callbackDelegate) !; actions.Add(element); } } }
public void AddEventHandler(string eventName, Element attachedTo, EventDelegate callbackDelegate) { if (!this.registeredEvents.ContainsKey(eventName)) { return; } var registeredEvent = this.registeredEvents[eventName]; var registeredEventHandler = new RegisteredEventHandler() { EventName = eventName, RegisteredEvent = registeredEvent, Delegate = callbackDelegate, Element = attachedTo, }; this.registeredEventHandlers.Add(registeredEventHandler); void elementCheckingDelegate(object[] objects) { if (objects.First() is Element element) { if (element != attachedTo && !element.IsChildOf(attachedTo)) { return; } } if (objects.Length == 0) { callbackDelegate.DynamicInvoke(null, Array.Empty <object>()); } else if (objects.Length == 1) { callbackDelegate.DynamicInvoke(objects.First(), Array.Empty <object>()); } else { callbackDelegate.DynamicInvoke(objects.First(), objects.Skip(1)); } } ScriptCallbackDelegateWrapper wrapper = new ScriptCallbackDelegateWrapper(elementCheckingDelegate, new()); foreach (var element in this.elementRepository.GetAll()) { if (registeredEvent.ElementType.IsAssignableFrom(element.GetType())) { var actions = (EventHandlerActions <Element>)registeredEvent.Delegate.DynamicInvoke(element, wrapper) !; actions.Add(element); } } }
public Gesture_Listener(Gesture_Controler gestureControler, Gesture_Event gesture) { registerHandler = new RegisteredEventHandler(RegisterGesture); continueHandler = new ContinuedEventHandler(ContinueGesture); terminateHandler = new TerminatedEventHandler(TerminateGesture); failHandler = new FailEventHandler(FailGesture); this.gestureEvent = gesture; this.gestureEvent.Registered += registerHandler; this.gestureEvent.Continued += continueHandler; this.gestureEvent.Terminated += terminateHandler; this.gestureEvent.Failed += failHandler; this.gestureControler = gestureControler; }
/// <summary> /// Registers the given function to be run when the bots gets registered on the server (usually after MOTD). /// </summary> /// <param name = "handler"> /// The function to register. /// </param> public void RegisterOnRegisteredHook(RegisteredEventHandler handler) { AlarisBase.Instance.Connection.Listener.OnRegistered += handler; }