public void RegisterBehaviour <TContainerType>(string name, UserInterfaceBehaviourEvent @event, UserInterfaceBehaviourHandler <TContainerType> callback) { if (!_registeredBehaviours.ContainsKey(name)) { _registeredBehaviours[name] = new Dictionary <UserInterfaceBehaviourEvent, UserInterfaceBehaviourHandler <object> >(); } _registeredBehaviours[name][@event] = (o, t, g, u) => { callback((TContainerType)o, t, g, u); }; }
private void HandleEventFromContainer(UserInterfaceBehaviourEvent ev, object sender) { if (!_containerBehaviours.ContainsKey(sender)) { return; } var behaviours = _containerBehaviours[sender]; foreach (var behaviour in behaviours) { if (!_registeredBehaviours.ContainsKey(behaviour)) { continue; } if (!_registeredBehaviours[behaviour].ContainsKey(ev)) { continue; } _registeredBehaviours[behaviour][ev](sender, this, _currentGameContext, _currentUpdateContext); } }
public void RegisterBehaviour <TContainerType>(string name, UserInterfaceBehaviourEvent @event, UserInterfaceBehaviourHandler <TContainerType> callback) { _behaviourRegistration.Add(controller => controller.RegisterBehaviour <TContainerType>(name, @event, callback)); }