/// <summary> /// Add a new listener to the specific action passed in. /// </summary> /// <param name="action">The action to listen for.</param> /// <param name="listener">The listener to alert.</param> public void AddListener(KeyboardKeyAction action, KeyboardKeyListener listener) { switch (action) { case KeyboardKeyAction.Down: if (downListeners == null) { downListeners = new List <KeyboardKeyListener>(); } downListeners.Add(listener); break; case KeyboardKeyAction.Pressed: if (pressedListeners == null) { pressedListeners = new List <KeyboardKeyListener>(); } pressedListeners.Add(listener); break; case KeyboardKeyAction.Up: if (upListeners == null) { upListeners = new List <KeyboardKeyListener>(); } upListeners.Add(listener); break; } }
/// <summary> /// Remove a specific listener from a key and a certain action /// of it. /// </summary> /// <param name="key">The key to remove a listener from.</param> /// <param name="action">The action to remove from.</param> /// <param name="listener">The listener to remove.</param> public void RemoveListener(KeyboardKey key, KeyboardKeyAction action, KeyboardKeyListener listener) { if (keyHandlers != null) { for (int i = 0, keyHandlerCount = keyHandlers.Count; i < keyHandlerCount; i++) { if (keyHandlers[i].Key == key) { keyHandlers[i].RemoveListener(action, listener); return; } } } }
/// <summary> /// Remove an existing listener from an action. /// </summary> /// <param name="action">The action to remove a listener from.</param> /// <param name="listener">The listener to remove.</param> public void RemoveListener(KeyboardKeyAction action, KeyboardKeyListener listener) { switch (action) { case KeyboardKeyAction.Down: if (downListeners != null) { for (int i = 0, downCount = downListeners.Count; i < downCount; i++) { if (downListeners[i] == listener) { downListeners.RemoveAt(i); break; } } } break; case KeyboardKeyAction.Pressed: if (pressedListeners != null) { for (int i = 0, pressedCount = pressedListeners.Count; i < pressedCount; i++) { if (pressedListeners[i] == listener) { pressedListeners.RemoveAt(i); break; } } } break; case KeyboardKeyAction.Up: if (upListeners != null) { for (int i = 0, upCount = upListeners.Count; i < upCount; i++) { if (upListeners[i] == listener) { upListeners.RemoveAt(i); break; } } } break; } }
/// <summary> /// Add a new event listener to the specific key, and action. /// </summary> /// <param name="key">The key to listen for.</param> /// <param name="action">It's life cycle event to listen for.</param> /// <param name="listener">The method to call back.</param> public void AddListener(KeyboardKey key, KeyboardKeyAction action, KeyboardKeyListener listener) { if (keyHandlers != null) { for (int i = 0, keyHandlerCount = keyHandlers.Count; i < keyHandlerCount; i++) { if (keyHandlers[i].Key == key) { keyHandlers[i].AddListener(action, listener); return; } } } else { keyHandlers = new List <KeyboardKeyHandler>(); } KeyboardKeyHandler keyHandler = new KeyboardKeyHandler(key); keyHandler.AddListener(action, listener); keyHandlers.Add(keyHandler); }