Esempio n. 1
0
        /// <summary>
        /// First attempts to perform special moves, if it does and it still has a remaining input, perform the rest of the input.
        /// If it doesn't, just throw the input at MovePerformer.
        /// </summary>
        /// <param name="inputList"></param>
        private void HandleInputs(List <string> inputList)
        {
            MoveWriter.WriteMoveIfValid(inputList);

            foreach (var Input in inputList)
            {
                var ToPerformInput         = Input.Trim();
                var ToAttemptRemainingKeys = _specialManagerPaul.AttemptSpecial(ToPerformInput, _inputSimulator, _inputManager);
                var ToInputKeys            = _inputManager.GetKeyCode(ToAttemptRemainingKeys);

                MovePerformer.PerformMoves(ToInputKeys);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Attempts to perform a special move if the input is part of the list above.
        /// Certain specials also include normal moves (ex: qcf2), in that case the remaining part of the string is returned and given to the MovePerformer.
        /// These are hardcoded values and timings. No way to do it dynamically.
        /// </summary>
        /// <param name="input"></param>
        /// <param name="inputSimulator"></param>
        /// <param name="inputManager"></param>
        /// <returns>Returns the remaining input when appropiate, else returns an empty string.</returns>
        public string AttemptSpecial(string input, InputSimulator inputSimulator, InputManager inputManager)
        {
            string RemainingInput   = "";
            string ToPerformSpecial = "";

            List <VirtualKeyCode[]> ForwardInput = inputManager.GetKeyCode("f");
            List <VirtualKeyCode[]> BackInput    = inputManager.GetKeyCode("b");
            List <VirtualKeyCode[]> DownInput    = inputManager.GetKeyCode("d");
            List <VirtualKeyCode[]> UpInput      = inputManager.GetKeyCode("u");

            List <VirtualKeyCode[]> LPInput = inputManager.GetKeyCode("1");
            List <VirtualKeyCode[]> RPInput = inputManager.GetKeyCode("2");
            List <VirtualKeyCode[]> LKInput = inputManager.GetKeyCode("3");
            List <VirtualKeyCode[]> RKInput = inputManager.GetKeyCode("4");

            foreach (var Special in SpeciaList)
            {
                if (input.Contains(Special))
                {
                    RemainingInput   = string.Join("", input.Split(Special, StringSplitOptions.RemoveEmptyEntries));
                    ToPerformSpecial = Special;
                    break;
                }

                if (input.Equals(Special))
                {
                    ToPerformSpecial = Special;
                    break;
                }
            }

            if (ToPerformSpecial.Equals("start"))
            {
                var StartInput = inputManager.GetKeyCode("start");

                inputSimulator.Keyboard.KeyDown(StartInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(StartInput[0][0]);

                return("");
            }

            if (ToPerformSpecial.Equals("n"))
            {
                Thread.Sleep(16);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("unblockable"))
            {
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.KeyDown(LPInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.KeyUp(LPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);

                return("");
            }

            if (ToPerformSpecial.Equals("ki"))
            {
                inputSimulator.Keyboard.KeyDown(LPInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.KeyDown(LKInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(LPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(LKInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);

                return("");
            }

            if (ToPerformSpecial.Equals("ssu"))
            {
                inputSimulator.Keyboard.KeyDown(UpInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(UpInput[0][0]);
                inputSimulator.Keyboard.Sleep(66);
                inputSimulator.Keyboard.KeyDown(UpInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(UpInput[0][0]);
                inputSimulator.Keyboard.Sleep(66);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("ssd"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(66);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(66);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);

                Thread.Sleep(16);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("combo1"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(600);
                inputSimulator.Keyboard.KeyDown(LKInput[0][0]);
                inputSimulator.Keyboard.Sleep(100);
                inputSimulator.Keyboard.KeyUp(LKInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(533);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(300);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(766);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(300);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(16);

                return("");
            }

            if (ToPerformSpecial.Equals("combo2"))
            {
                inputSimulator.Keyboard.KeyDown(UpInput[0][0]);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.KeyDown(LKInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(UpInput[0][0]);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.KeyUp(LKInput[0][0]);
                inputSimulator.Keyboard.Sleep(200);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(700);
                inputSimulator.Keyboard.KeyDown(LKInput[0][0]);
                inputSimulator.Keyboard.Sleep(100);
                inputSimulator.Keyboard.KeyUp(LKInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(533);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(300);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(766);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(300);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(16);

                return("");
            }

            if (ToPerformSpecial.Equals("combo3"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(LPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(LPInput[0][0]);
                inputSimulator.Keyboard.Sleep(700);
                inputSimulator.Keyboard.KeyDown(LKInput[0][0]);
                inputSimulator.Keyboard.Sleep(100);
                inputSimulator.Keyboard.KeyUp(LKInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(533);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(300);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(766);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(200);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(16);

                return("");
            }

            if (ToPerformSpecial.Equals("deathfist"))
            {
                var MoveInput = inputManager.GetKeyCode("2");

                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(MoveInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(MoveInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(500);

                return("");
            }

            if (ToPerformSpecial.Equals("demoman"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RKInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(500);
                inputSimulator.Keyboard.KeyDown(LPInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(LPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);

                Thread.Sleep(500);

                return("");
            }

            if (ToPerformSpecial.Equals("qcf"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("qcb"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("cds"))
            {
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(33);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);

                if (RemainingInput.Length > 0)
                {
                    var ToPerformInputs = inputManager.GetKeyCode(RemainingInput);
                    MovePerformer.PerformMoves(ToPerformInputs);
                    inputSimulator.Keyboard.Sleep(16);
                    inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                    inputSimulator.Keyboard.Sleep(16);
                    inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                    return("");
                }

                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(66);

                return(RemainingInput);
            }

            if (ToPerformSpecial.Equals("ragedrive") || ToPerformSpecial.Equals("rd"))
            {
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(ForwardInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.KeyDown(LPInput[0][0]);
                inputSimulator.Keyboard.KeyDown(RPInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(LPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(RPInput[0][0]);
                inputSimulator.Keyboard.KeyUp(ForwardInput[0][0]);

                Thread.Sleep(650);

                return("");
            }

            if (ToPerformSpecial.Equals("rageart") || ToPerformSpecial.Equals("ra"))
            {
                var RAButton = inputManager.GetKeyCode("ra");

                inputSimulator.Keyboard.KeyDown(RAButton[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(RAButton[0][0]);

                return("");
            }

            if (ToPerformSpecial.Equals("kbd"))
            {
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(DownInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyDown(BackInput[0][0]);
                inputSimulator.Keyboard.Sleep(16);
                inputSimulator.Keyboard.KeyUp(BackInput[0][0]);

                Thread.Sleep(66);

                return("");
            }

            return(input);
        }