Example #1
0
 public GameRunning(string gameLocation, GameProfiles gameProfile, bool isTest, SettingsData settingsData, string testMenuString, JoystickMapping joystickMapping1, JoystickMapping joystickMapping2, XInputMapping xinputMapping1, XInputMapping xinputMapping2, bool testMenuIsExe = false, string testMenuExe = "")
 {
     InitializeComponent();
     _gameLocation        = gameLocation;
     InputCode.ButtonMode = gameProfile;
     _isTest            = isTest;
     _serialPortHandler = new SerialPortHandler();
     _settingsData      = settingsData;
     _testMenuString    = testMenuString;
     _joystickMapping1  = joystickMapping1;
     _joystickMapping2  = joystickMapping2;
     _xinputMapping1    = xinputMapping1;
     _xinputMapping2    = xinputMapping2;
     _testMenuIsExe     = testMenuIsExe;
     _testMenuExe       = testMenuExe;
 }
Example #2
0
        private void UpdateButtonState(IButtonInputElement deviceElement, IEnumerable <ElementMapping> mappings)
        {
            bool pressed = false;

            foreach (ElementMapping mapping in mappings)
            {
                if (mapping is KeyboardMapping)
                {
                    pressed = this.KeyboardReader.GetKeyState(((KeyboardMapping)mapping).Key);
                }
                else if (mapping is XInputMapping)
                {
                    XInputMapping xInputMapping = (XInputMapping)mapping;
                    pressed = this.XInputReader.GetButtonState(xInputMapping.Controller, xInputMapping.Element);
                }

                if (pressed)
                {
                    break;
                }
            }

            deviceElement.State = pressed;
        }
Example #3
0
        private void BtnSaveKeys(object sender, RoutedEventArgs e)
        {
            try
            {
                if (_playerId == 1)
                {
                    // Save player 1 xml
                    var map = new XInputMapping()
                    {
                        Button1             = GetTagButtonInfo(TxtButton1),
                        Button2             = GetTagButtonInfo(TxtButton2),
                        Button3             = GetTagButtonInfo(TxtButton3),
                        Button4             = GetTagButtonInfo(TxtButton4),
                        Button5             = GetTagButtonInfo(TxtButton5),
                        Button6             = GetTagButtonInfo(TxtButton6),
                        Start               = GetTagButtonInfo(TxtStart),
                        Test                = GetTagButtonInfo(TxtTestSw),
                        Service             = GetTagButtonInfo(TxtService),
                        Up                  = GetTagButtonInfo(TxtUp),
                        Down                = GetTagButtonInfo(TxtDown),
                        Left                = GetTagButtonInfo(TxtLeft),
                        Right               = GetTagButtonInfo(TxtRight),
                        GunUp               = GetTagButtonInfo(TxtLgiUp),
                        GunDown             = GetTagButtonInfo(TxtLgiDown),
                        GunLeft             = GetTagButtonInfo(TxtLgiLeft),
                        GunRight            = GetTagButtonInfo(TxtLgiRight),
                        GunTrigger          = GetTagButtonInfo(TxtGunTrigger),
                        SonicItem           = GetTagButtonInfo(TxtSonicItemButton),
                        GasAxis             = GetTagButtonInfo(TxtGas),
                        BrakeAxis           = GetTagButtonInfo(TxtBrake),
                        WheelAxis           = GetTagButtonInfo(TxtWheel),
                        SrcGearChange1      = GetTagButtonInfo(TxtSrcGearChange1),
                        SrcGearChange2      = GetTagButtonInfo(TxtSrcGearChange2),
                        SrcGearChange3      = GetTagButtonInfo(TxtSrcGearChange3),
                        SrcGearChange4      = GetTagButtonInfo(TxtSrcGearChange4),
                        SrcViewChange1      = GetTagButtonInfo(TxtSrcViewChange1),
                        SrcViewChange2      = GetTagButtonInfo(TxtSrcViewChange2),
                        SrcViewChange3      = GetTagButtonInfo(TxtSrcViewChange3),
                        SrcViewChange4      = GetTagButtonInfo(TxtSrcViewChange4),
                        InitialD6MenuDown   = GetTagButtonInfo(TxtInitialD6MenuDown),
                        InitialD6MenuLeft   = GetTagButtonInfo(TxtInitialD6MenuLeft),
                        InitialD6MenuRight  = GetTagButtonInfo(TxtInitialD6MenuRight),
                        InitialD6MenuUp     = GetTagButtonInfo(TxtInitialD6MenuUp),
                        InitialD6ShiftDown  = GetTagButtonInfo(TxtInitialD6ShiftDown),
                        InitialD6ShiftUp    = GetTagButtonInfo(TxtInitialD6ShiftUp),
                        InitialD6ViewChange = GetTagButtonInfo(TxtInitialD6ViewChange),
                    };
                    map.GunMultiplier = IUpDownMovementMultiplier.Value ?? 1;
                    JoystickHelper.SerializeXInput(map, 1);
                }

                if (_playerId == 2)
                {
                    // Save player 2 xml
                    var map = new XInputMapping()
                    {
                        Button1    = GetTagButtonInfo(TxtButton1),
                        Button2    = GetTagButtonInfo(TxtButton2),
                        Button3    = GetTagButtonInfo(TxtButton3),
                        Button4    = GetTagButtonInfo(TxtButton4),
                        Button5    = GetTagButtonInfo(TxtButton5),
                        Button6    = GetTagButtonInfo(TxtButton6),
                        Start      = GetTagButtonInfo(TxtStart),
                        Test       = GetTagButtonInfo(TxtTestSw),
                        Service    = GetTagButtonInfo(TxtService),
                        Up         = GetTagButtonInfo(TxtUp),
                        Down       = GetTagButtonInfo(TxtDown),
                        Left       = GetTagButtonInfo(TxtLeft),
                        Right      = GetTagButtonInfo(TxtRight),
                        GunUp      = GetTagButtonInfo(TxtLgiUp),
                        GunDown    = GetTagButtonInfo(TxtLgiDown),
                        GunLeft    = GetTagButtonInfo(TxtLgiLeft),
                        GunRight   = GetTagButtonInfo(TxtLgiRight),
                        GunTrigger = GetTagButtonInfo(TxtGunTrigger)
                    };
                    map.GunMultiplier = IUpDownMovementMultiplier.Value ?? 1;
                    JoystickHelper.SerializeXInput(map, 2);
                }
                MessageBox.Show("Save Complete", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Saving failed with error: {ex.InnerException} {ex.Message}", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }
            Close();
        }
Example #4
0
        /// <summary>
        /// Creates DirectInput thread.
        /// </summary>
        /// <param name="joystickGuid">Joysticks GUID.</param>
        /// <param name="playerNumber">Player number.</param>
        /// <param name="directInputListener">Direct Input listener class.</param>
        /// <param name="joystickMapping"></param>
        /// <param name="xinputMapping"></param>
        /// <param name="useXinput">If we use xinput instead.</param>
        /// <returns>Thread id.</returns>
        private Thread CreateDirectInputThread(Guid joystickGuid, int playerNumber, DirectInputListener directInputListener, XInputListener xinputListener, JoystickMapping joystickMapping, XInputMapping xinputMapping, bool useXinput)
        {
            Thread inputThread;

            if (!useXinput)
            {
                if (joystickGuid == Guid.Empty)
                {
                    return(null);
                }
                inputThread = new Thread(() => directInputListener.Listen(joystickGuid, playerNumber,
                                                                          _settingsData.UseSto0ZDrivingHack, joystickMapping));
                inputThread.Start();
            }
            else
            {
                inputThread = new Thread(() => xinputListener.Listen(playerNumber, _settingsData.UseSto0ZDrivingHack, xinputMapping));
                inputThread.Start();
            }
            return(inputThread);
        }
Example #5
0
        /// <summary>
        /// Validates that the game exists and then runs it with the emulator.
        /// </summary>
        /// <param name="gameLocation">Game executable location.</param>
        /// <param name="gameProfile">Input profile.</param>
        /// <param name="testMenuString">Command to run test menu.</param>
        /// <param name="testMenuIsExe">If uses separate exe.</param>
        /// <param name="exeName">Test menu exe name.</param>
        private void ValidateAndRun(string gameLocation, GameProfiles gameProfile, string testMenuString, bool testMenuIsExe = false, string exeName = "")
        {
            if (!File.Exists(gameLocation))
            {
                MessageBox.Show($"Cannot find game exe at: {gameLocation}", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
            if (!File.Exists("ParrotLoader.exe"))
            {
                MessageBox.Show($"Cannot find ParrotLoader.exe", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
            if (!File.Exists("TeknoParrot.dll"))
            {
                MessageBox.Show($"Cannot find TeknoParrot.dll", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }
            var testMenu = ChkTestMenu.IsChecked != null && ChkTestMenu.IsChecked.Value;

            JoystickMapping jmap1 = null;
            JoystickMapping jmap2 = null;

            XInputMapping xmap1 = null;
            XInputMapping xmap2 = null;

            try
            {
                if (File.Exists("JoystickMapping1.xml"))
                {
                    jmap1 = JoystickHelper.DeSerialize(1);
                }

                if (File.Exists("JoystickMapping2.xml"))
                {
                    jmap2 = JoystickHelper.DeSerialize(2);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Loading joystick mapping failed with error: {ex.InnerException} {ex.Message}", "Error",
                                MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }

            try
            {
                if (File.Exists("XInputMapping1.xml"))
                {
                    xmap1 = JoystickHelper.DeSerializeXInput(1);
                }

                if (File.Exists("XInputMapping2.xml"))
                {
                    xmap2 = JoystickHelper.DeSerializeXInput(2);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Loading joystick mapping failed with error: {ex.InnerException} {ex.Message}", "Error",
                                MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }

            if (jmap1 == null)
            {
                jmap1 = new JoystickMapping();
            }

            if (jmap2 == null)
            {
                jmap2 = new JoystickMapping();
            }

            if (xmap1 == null)
            {
                xmap1 = new XInputMapping();
            }

            if (xmap2 == null)
            {
                xmap2 = new XInputMapping();
            }

            var gameRunning = new GameRunning(gameLocation, gameProfile, testMenu, _settingsData, testMenuString, jmap1, jmap2, xmap1, xmap2, testMenuIsExe, exeName);

            gameRunning.ShowDialog();
            gameRunning.Close();
        }