public void addGlobalKeyAction(String name, KeyCodes k1, KeyCodes? k2 = null, KeyCodes? k3 = null, Action OnPress = null, Action OnRelease = null, Action OnHold = null)
        {
            KeyBundle keyBundle;
            if (k2 == null) keyBundle = new KeyBundle(k1);
            else if (k3 == null) keyBundle = new KeyBundle((KeyCodes)k2, k1);
            else keyBundle = new KeyBundle((KeyCodes)k3, (KeyCodes)k2, k1);

            var keyAction = new KeyAction(name, OnPress, new HashSet<KeyBundle>() { keyBundle });

            keyAction.releaseAction = OnRelease;
            keyAction.holdAction = OnHold;

            Keybinds.Add(keyBundle, keyAction);
        }
        public void TryAction()
        {
            KeyBundle kb = new KeyBundle(PressedKeys);
            string m1 = "none"; string m2 = "none";
            if (kb.mod1 != null) m1 = ((KeyCodes)kb.mod1).ToString();
            if (kb.mod2 != null) m2 = ((KeyCodes)kb.mod2).ToString();

            //Console.WriteLine("ex: {0}\t\tmod1: {1}\t\tmod2: {2}", kb.effectiveKey, m1, m2);
            //Console.WriteLine("ex: {0}\t\tmod1: {1}\t\tmod2: {2} \t\t extra: {3}", PressedKeys.ElementAt(0), PressedKeys.ElementAt(1), PressedKeys.ElementAt(2), PressedKeys.ElementAt(3));
            //Console.WriteLine("ex: {0}", PressedKeys.Count);

            if (!Keybinds.ContainsKey(kb))
            {
                KeyCodes? temp = null;

                if (kb.mod2 != null)
                {
                    temp = kb.mod2;
                    kb.mod2 = null;
                }

                if (!Keybinds.ContainsKey(kb))
                {
                    if (kb.mod1 != null) kb.mod1 = temp;
                    if (!Keybinds.ContainsKey(kb))
                    {
                        kb.mod1 = null;
                        if (!Keybinds.ContainsKey(kb))
                        {
                            return;
                        }
                    }
                }
            }

            KeyAction ka = Keybinds[kb];
            if (ka != null)
            {

                if (MouseInGameBox || (kb.effectiveKey != KeyCodes.LeftClick && kb.effectiveKey != KeyCodes.RightClick && kb.effectiveKey != KeyCodes.MiddleClick))
                {

                    if (ka.pressAction != null)
                    {
                        ka.pressAction();
                    }
                    //if (!PressedBundles.ContainsKey(kb))
                    PressedBundles.Add(kb, ka); //exception
                }

            }
        }
 public void Add(string name, KeyBundle bundle, Action action, Action holdAction = null)
 {
     KeyAction ka = new KeyAction(name, action, new HashSet<KeyBundle>() { bundle });
     Keybinds.Add(bundle, ka);
 }
Пример #4
0
        protected void addProcessKeyAction(String name, KeyCodes k1, KeyCodes? k2 = null, KeyCodes? k3 = null, Action OnPress = null, Action OnRelease = null, Action OnHold = null)
        {
            KeyBundle keyBundle;
            if (k2 == null) keyBundle = new KeyBundle(k1);
            else if (k3 == null) keyBundle = new KeyBundle((KeyCodes)k2, k1);
            else keyBundle = new KeyBundle((KeyCodes)k3, (KeyCodes) k2, k1);

            var keyAction = new KeyAction(name, OnPress, new HashSet<KeyBundle>() { keyBundle });

            keyAction.releaseAction = OnRelease;
            keyAction.holdAction = OnHold;

            processKeyActions.Add(keyAction, keyBundle);
        }