Ejemplo n.º 1
0
        private static void ProcessInput(GamepadButton button, bool state)
        {
            // Do left/right mouse buttons
            if (button == GamepadButton.LeftStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Left);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Left);
                }
            }
            else if (button == GamepadButton.RightStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Right);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Right);
                }
            }

            // Do other buttons
            ProcessButton(button, state);
        }
Ejemplo n.º 2
0
        private static void DS4TouchpadButtonDown(object sender, TouchpadEventArgs args)
        {
            if (!Settings.Default.EnableTouchpad)
            {
                return;
            }

            // Ignore touchpad if disabled during mouselook
            // Ignore touchpad if disabled during mouselook
            if (Settings.Default.MemoryTouchpadCursorOnly &&
                WoWReader.IsAttached &&
                WoWReader.GameState &&
                WoWReader.MouselookState)
            {
                return;
            }

            switch (Settings.Default.TouchpadMode)
            {
            case 0:
                WoWInput.SendMouseDown(args.touches.Last().hwX < (1920 / 2) ? MouseButton.Left : MouseButton.Right);
                break;

            case 1:
                WoWInput.SendKeyDown(args.touches.Last().hwX < (1920 / 2)
                        ? BindManager.GetKey(GamepadButton.CenterLeft)
                        : BindManager.GetKey(GamepadButton.CenterRight));
                break;
            }
        }
Ejemplo n.º 3
0
 private static void ProcessPlayerAoe(GamepadButton button, bool state)
 {
     if (!_keyStates[(int)button])
     {
         if (button == Settings.Default.MemoryAoeConfirm)
         {
             WoWInput.SendMouseClick(MouseButton.Left);
             return;
         }
         if (button == Settings.Default.MemoryAoeCancel)
         {
             WoWInput.SendMouseClick(MouseButton.Right);
             return;
         }
     }
     ProcessInput(button, state);
 }
Ejemplo n.º 4
0
        private static bool ProcessButton(GamepadButton button, bool state)
        {
            if (_keyStates[(int)button] != state)
            {
                if (state)
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(button));
                }
                else
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(button));
                }

                _keyStates[(int)button] = state;
            }
            return(state);
        }
Ejemplo n.º 5
0
        private static void DS4TouchpadButtonDown(object sender, TouchpadEventArgs args)
        {
            if (!Settings.Default.EnableTouchpad)
            {
                return;
            }

            switch (Settings.Default.TouchpadMode)
            {
            case 0:
                WoWInput.SendMouseDown(args.touches.Last().hwX < (1920 / 2) ? MouseButton.Left : MouseButton.Right);
                break;

            case 1:
                WoWInput.SendKeyDown(args.touches.Last().hwX < (1920 / 2)
                        ? BindManager.GetKey(GamepadButton.CenterLeft)
                        : BindManager.GetKey(GamepadButton.CenterRight));
                break;
            }
        }
Ejemplo n.º 6
0
        private static void ProcessInput(GamepadButton button, bool state)
        {
            // Do left/right mouse buttons
            if (button == GamepadButton.LeftStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Left);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Left);
                }
            }
            else if (button == GamepadButton.RightStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Right);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Right);
                }
            }

            // Do other buttons
            if (_keyStates[(int)button] != state)
            {
                if (state)
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(button));
                }
                else
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(button));
                }
            }

            _keyStates[(int)button] = state;
        }
Ejemplo n.º 7
0
        public static void WriteBinds()
        {
            if (ProcessManager.GameProcess == null)
            {
                return;
            }

            // Attempt to locate WoWmapper.lua
            var addonPath = Path.GetDirectoryName(ProcessManager.GameProcess.MainModule.FileName);

            if (addonPath == null)
            {
                return;
            }

            var luaFile = Path.Combine(addonPath, "Interface\\AddOns\\ConsolePort\\Controllers\\WoWmapper.lua");

            if (!File.Exists(luaFile))
            {
                return;
            }

            // If export is disabled, write blank file
            if (!Settings.Default.ExportBindings)
            {
                Log.WriteLine("Clearing ConsolePort bindings at {0}", luaFile);
                File.WriteAllText(luaFile, "return");
                return;
            }

            // Get last modify time and see if it needs updating
            var fileInfo = new FileInfo(luaFile);

            if (fileInfo.LastWriteTime >= Settings.Default.BindingsModified)
            {
                return;
            }

            Log.WriteLine("Writing ConsolePort bind configuration to {0}", luaFile);

            var templateStreamInfo =
                Application.GetResourceStream(new Uri("pack://application:,,,/ConsolePort/WoWmapper.lua"));
            var templateStream = templateStreamInfo.Stream;
            var templateReader = new StreamReader(templateStream);

            var bindDict = new BindDictionary();

            try
            {
                using (var fileStream = new FileStream(luaFile, FileMode.Create))
                    using (var fileWriter = new StreamWriter(fileStream))
                        while (!templateReader.EndOfStream)
                        {
                            var templateLine = templateReader.ReadLine();
                            if (templateLine == null)
                            {
                                break;
                            }

                            if (!templateLine.Contains('<') && !templateLine.Contains('>'))
                            {
                                fileWriter.WriteLine(templateLine);
                                continue;
                            }

                            var templateKey = templateLine.Substring(templateLine.IndexOf('<') + 1);
                            templateKey = templateKey.Substring(0, templateKey.IndexOf('>'));

                            try
                            {
                                var bindValue = bindDict.GetBindKey(templateKey);
                                fileWriter.WriteLine(templateLine.Replace("<" + templateKey + ">", bindValue));
                            }
                            catch
                            {
                                fileWriter.WriteLine(templateLine);
                            }
                        }
                App.Overlay.PopupNotification(new OverlayNotification()
                {
                    Content =
                        $"Your ConsolePort settings have been updated. Reload your user interface to activate your changes.",
                    Header   = "Settings updated",
                    Duration = 10000,
                    UniqueID = "CP_UPDATED"
                });
                new Task(() =>
                {
                    WoWInput.SendKeyDown(Key.LeftAlt, true);
                    WoWInput.SendKeyDown(Key.LeftCtrl, true);
                    WoWInput.SendKeyDown(Key.LeftShift, true);
                    Thread.Sleep(50);
                    WoWInput.SendKeyDown(Key.F12, true);
                    Thread.Sleep(50);
                    WoWInput.SendKeyUp(Key.F12, true);
                    WoWInput.SendKeyUp(Key.LeftShift, true);
                    WoWInput.SendKeyUp(Key.LeftCtrl, true);
                    WoWInput.SendKeyUp(Key.LeftAlt, true);
                }).Start();
            }
            catch
            {
            }
        }
Ejemplo n.º 8
0
        private static void InputWatcherThread()
        {
            while (_threadRunning)
            {
                var axisMovement = Settings.Default.SwapSticks
                    ? ControllerManager.GetRightAxis()
                    : ControllerManager.GetLeftAxis();
                var axisCursor = Settings.Default.SwapSticks
                    ? ControllerManager.GetLeftAxis()
                    : ControllerManager.GetRightAxis();

                ProcessMovement(axisMovement);

                ProcessCursor(axisCursor);


                if (ProcessManager.GameProcess != null &&
                    WoWReader.IsAttached && WoWReader.GameState)
                {
                    var foregroundWindow = GetForegroundWindow();
                    if (foregroundWindow == ProcessManager.GameProcess?.MainWindowHandle)
                    {
                        _setMouselook = false;
                    }

                    // Cancel mouselook when alt-tabbed
                    if (Settings.Default.MemoryAutoCancel && !_setMouselook && WoWReader.MouselookState &&
                        foregroundWindow != ProcessManager.GameProcess?.MainWindowHandle)
                    {
                        WoWInput.SendMouseClick(MouseButton.Right, true);
                        _setMouselook = true;
                    }

                    // Show/hide the overlay crosshair
                    if (Settings.Default.EnableOverlay && Settings.Default.EnableOverlayCrosshair)
                    {
                        // Show crosshair after mouselooking for 100ms
                        if (WoWReader.MouselookState && DateTime.Now >= _mouselookStarted + TimeSpan.FromMilliseconds(200) &&
                            !App.Overlay.CrosshairVisible && !_crosshairShowing)
                        {
                            App.Overlay.SetCrosshairState(true, _cursorX, _cursorY);
                            _crosshairShowing = true;
                        } // Otherwise hide crosshair
                        else if (!WoWReader.MouselookState && _crosshairShowing)
                        {
                            App.Overlay.SetCrosshairState(false);
                            _crosshairShowing = false;
                        }
                    }


                    // Check if mouselook is inactive
                    if (!WoWReader.MouselookState)
                    {
                        // Update last known cursor position
                        var cursor = Cursor.Position;
                        _cursorX = cursor.X;
                        _cursorY = cursor.Y;

                        // Check if we need to re-center the mouse cursor
                        if (Settings.Default.MemoryAutoCenter &&
                            foregroundWindow == ProcessManager.GameProcess?.MainWindowHandle &&
                            _mouselookStarted != DateTime.MinValue &&
                            DateTime.Now >=
                            _mouselookStarted + TimeSpan.FromMilliseconds(Settings.Default.MemoryAutoCenterDelay))
                        {
                            var windowRect = ProcessManager.GetClientRectangle();
                            Cursor.Position = new System.Drawing.Point(
                                windowRect.X + windowRect.Width / 2,
                                windowRect.Y + windowRect.Height / 2);
                        }

                        // Reset auto-center cooldown timer
                        _mouselookStarted = DateTime.MinValue;
                    }

                    // Check if mouselook is active
                    if (WoWReader.MouselookState)
                    {
                        // If so, start the cooldown timer
                        if (_mouselookStarted == DateTime.MinValue)
                        {
                            _mouselookStarted = DateTime.Now;
                        }

                        // If the timer has elapsed but mouselook is active, temporarily hide the crosshair
                        else if (Settings.Default.EnableOverlayCrosshair &&
                                 Settings.Default.MemoryAutoCenter &&
                                 DateTime.Now >= _mouselookStarted +
                                 TimeSpan.FromMilliseconds(Settings.Default.MemoryAutoCenterDelay) && _crosshairShowing &&
                                 App.Overlay.CrosshairVisible)
                        {
                            App.Overlay.SetCrosshairState(false);
                        }
                    }
                }

                Thread.Sleep(5);
            }
        }
Ejemplo n.º 9
0
        private static void ProcessCharacterMenu(GamepadButton button, bool state)
        {
            switch (button)
            {
            case GamepadButton.LFaceUp:
                if (state && !_keyStates[(int)button])
                {
                    WoWInput.SendKeyDown(Key.Up);
                }
                if (!state && _keyStates[(int)button])
                {
                    WoWInput.SendKeyUp(Key.Up);
                }
                break;

            case GamepadButton.LFaceDown:
                if (state && !_keyStates[(int)button])
                {
                    WoWInput.SendKeyDown(Key.Down);
                }
                if (!state && _keyStates[(int)button])
                {
                    WoWInput.SendKeyUp(Key.Down);
                }
                break;

            case GamepadButton.RFaceDown:
                if (state && !_keyStates[(int)button])
                {
                    WoWInput.SendKeyDown(Key.Enter);
                }
                if (!state && _keyStates[(int)button])
                {
                    WoWInput.SendKeyUp(Key.Enter);
                }
                break;

            case GamepadButton.CenterMiddle:
                if (state && !_keyStates[(int)button])
                {
                    WoWInput.SendKeyDown(Key.Escape);
                }
                if (!state && _keyStates[(int)button])
                {
                    WoWInput.SendKeyUp(Key.Escape);
                }
                break;
            }

            // Do left/right mouse buttons
            if (button == GamepadButton.LeftStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Left);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Left);
                }
            }
            else if (button == GamepadButton.RightStick)
            {
                if (state)
                {
                    WoWInput.SendMouseDown(MouseButton.Right);
                }
                else
                {
                    WoWInput.SendMouseUp(MouseButton.Right);
                }
            }

            _keyStates[(int)button] = state;
        }
Ejemplo n.º 10
0
        private static void ProcessMovement(Point axis)
        {
            var sendLeft  = -axis.X > Settings.Default.MovementThreshold;
            var sendRight = axis.X > Settings.Default.MovementThreshold;
            var sendUp    = -axis.Y > Settings.Default.MovementThreshold;
            var sendDown  = axis.Y > Settings.Default.MovementThreshold;

            var strength = Math.Sqrt(axis.X * axis.X + axis.Y * axis.Y);

            if (false && Settings.Default.MemoryAutoWalk &&  // AUTO WALK DISABLED
                WoWReader.IsAttached &&
                WoWReader.GameState)
            {
                var moveState = WoWReader.MovementState;
                if (moveState == 0 || moveState == 1)
                {
                    if (strength < Settings.Default.WalkThreshold &&
                        strength >= Settings.Default.MovementThreshold &&
                        moveState == 0) // Activate Walk
                    {
                        WoWInput.SendKeyDown(Key.Divide);
                        WoWInput.SendKeyUp(Key.Divide);
                        _stopWalk = false;
                    }
                    else if (strength >= Settings.Default.WalkThreshold && moveState == 1) // Deactivate walk, start run
                    {
                        WoWInput.SendKeyDown(Key.Divide);
                        WoWInput.SendKeyUp(Key.Divide);
                    }
                    else if (strength < Settings.Default.MovementThreshold && !_stopWalk && moveState == 1)
                    // Deactivate walk, stop moving
                    {
                        WoWInput.SendKeyDown(Key.Divide);
                        WoWInput.SendKeyUp(Key.Divide);
                        _stopWalk = true;
                    }
                }
            }
            if (sendLeft)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickLeft])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickLeft));
                    _keyStates[(int)GamepadButton.LeftStickLeft] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickLeft])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickLeft));
                    _keyStates[(int)GamepadButton.LeftStickLeft] = false;
                }
            }

            if (sendRight)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickRight])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickRight));
                    _keyStates[(int)GamepadButton.LeftStickRight] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickRight])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickRight));
                    _keyStates[(int)GamepadButton.LeftStickRight] = false;
                }
            }

            if (sendUp)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickUp])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickUp));
                    _keyStates[(int)GamepadButton.LeftStickUp] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickUp])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickUp));
                    _keyStates[(int)GamepadButton.LeftStickUp] = false;
                }
            }

            if (sendDown)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickDown])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickDown));
                    _keyStates[(int)GamepadButton.LeftStickDown] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickDown])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickDown));
                    _keyStates[(int)GamepadButton.LeftStickDown] = false;
                }
            }
        }
Ejemplo n.º 11
0
        private static void ProcessMovement(Point axis)
        {
            var sendLeft  = -axis.X > Settings.Default.MovementThreshold;
            var sendRight = axis.X > Settings.Default.MovementThreshold;
            var sendUp    = -axis.Y > Settings.Default.MovementThreshold;
            var sendDown  = axis.Y > Settings.Default.MovementThreshold;

            var strength = Math.Sqrt(axis.X * axis.X + axis.Y * axis.Y);

            if (sendLeft)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickLeft])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickLeft));
                    _keyStates[(int)GamepadButton.LeftStickLeft] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickLeft])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickLeft));
                    _keyStates[(int)GamepadButton.LeftStickLeft] = false;
                }
            }

            if (sendRight)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickRight])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickRight));
                    _keyStates[(int)GamepadButton.LeftStickRight] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickRight])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickRight));
                    _keyStates[(int)GamepadButton.LeftStickRight] = false;
                }
            }

            if (sendUp)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickUp])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickUp));
                    _keyStates[(int)GamepadButton.LeftStickUp] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickUp])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickUp));
                    _keyStates[(int)GamepadButton.LeftStickUp] = false;
                }
            }

            if (sendDown)
            {
                if (!_keyStates[(int)GamepadButton.LeftStickDown])
                {
                    WoWInput.SendKeyDown(BindManager.GetKey(GamepadButton.LeftStickDown));
                    _keyStates[(int)GamepadButton.LeftStickDown] = true;
                }
            }
            else
            {
                if (_keyStates[(int)GamepadButton.LeftStickDown])
                {
                    WoWInput.SendKeyUp(BindManager.GetKey(GamepadButton.LeftStickDown));
                    _keyStates[(int)GamepadButton.LeftStickDown] = false;
                }
            }
        }