public Panelhandler(Lib.UserInputManager manager, UserInputKey key, KeyPointAction onOpen, KeyPointAction onClose, bool blockEnv = true) { var openhandler = new KeyHandler(Layer.Ui, BlockType.None); var closehandler = new KeyHandler(Layer.Ui, BlockType.All); var openBlockhandler = blockEnv ? new PointerKeyHandler(Layer.Ui, BlockType.All) : null; openhandler.BindKeyAction(key, (data) => { manager.RegisterKeyhandler(closehandler); manager.RegisterPointerhandler(openBlockhandler); manager.UnregisterKeyhandler(openhandler); }); if (null != onOpen) { openhandler.BindKeyAction(key, onOpen); } closehandler.BindKeyAction(key, (data) => { manager.RegisterKeyhandler(openhandler); manager.UnregisterKeyhandler(closehandler); manager.UnregisterPointerhandler(openBlockhandler); }); if (null != onClose) { closehandler.BindKeyAction(key, onClose); } manager.RegisterKeyhandler(openhandler); }
protected virtual void DoDispatch(KeyPointAction action, KeyData data) { if (action != null) { action(data); } }
public KeyHandler BindKeyAction(UserInputKey key, KeyPointAction pointAction) { var data = new KeyData(key); KeyPointAction actionAss; if (binding.TryGetValue(data, out actionAss)) { actionAss += pointAction; } else { binding[data] = pointAction; } return(this); }
public PointerKeyHandler BindPointAction(UserInputKey key, KeyPointAction action) { var data = new PointerData(key); KeyPointAction pointActions; if (binding.TryGetValue(data, out pointActions)) { pointActions += action; } else { binding[data] = action; } return(this); }