コード例 #1
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
#if HAVE_LEGACY_DIRECTX
            Microsoft.DirectX.DirectInput.DeviceList dl = Microsoft.DirectX.DirectInput.Manager.GetDevices(
                Microsoft.DirectX.DirectInput.DeviceType.Joystick, Microsoft.DirectX.DirectInput.EnumDevicesFlags.AttachedOnly);
            while (dl.Count > 0 && dl.MoveNext())
            {
                Microsoft.DirectX.DirectInput.DeviceInstance di = (Microsoft.DirectX.DirectInput.DeviceInstance)dl.Current;
                if (di.DeviceType == Microsoft.DirectX.DirectInput.DeviceType.Joystick)
                {
                    //InitializeJoystick( di );
                    Console.WriteLine("DirectX joystick: {0}", di);

                    // create a device from this controller.
                    joystickDevice = new Microsoft.DirectX.DirectInput.Device(di.InstanceGuid);
                    //joystickDevice.SetCooperativeLevel(this,
                    //    Microsoft.DirectX.DirectInput.CooperativeLevelFlags.Background | Microsoft.DirectX.DirectInput.CooperativeLevelFlags.NonExclusive);

                    // Tell DirectX that this is a Joystick.
                    joystickDevice.SetDataFormat(Microsoft.DirectX.DirectInput.DeviceDataFormat.Joystick);
                    // Finally, acquire the device.
                    joystickDevice.Acquire();

                    // Find the capabilities of the joystick
                    Microsoft.DirectX.DirectInput.DeviceCaps cps = joystickDevice.Caps;
                    // number of Axes
                    Console.WriteLine("Joystick Axis: " + cps.NumberAxes);
                    // number of Buttons
                    Console.WriteLine("Joystick Buttons: " + cps.NumberButtons);
                    // number of PoV hats
                    Console.WriteLine("Joystick PoV hats: " + cps.NumberPointOfViews);

                    break;
                }
            }
#endif
            // Sound
            warsContent.SetContentManager(new ContentManager(this.Services, @"Content\"));
            //contentManager = new ContentManager(this.Services, @"Content\");

            base.Initialize();
        }
コード例 #2
0
        private void NewDeviceDetectTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                Microsoft.DirectX.DirectInput.DeviceList devList =
                    Microsoft.DirectX.DirectInput.Manager.GetDevices(
                        Microsoft.DirectX.DirectInput.DeviceClass.GameControl,
                        Microsoft.DirectX.DirectInput.EnumDevicesFlags.AttachedOnly
                        );

                try
                {
                    if (deviceControl.devList.Count != devList.Count)
                    {
                        AxisMovingTimer.Stop();
                        KeyMappingTimer.Stop();

                        ReloadDevices();

                        int value = LargeTab.SelectedIndex;
                        if (value == 1)
                        {
                            AxisMovingTimer.Start();
                        }
                        if (value == 2)
                        {
                            KeyMappingTimer.Start();
                            KeyMappingGrid.Items.Refresh();
                        }
                    }
                }
                catch (Exception ex001)
                {
                    Diagnostics.WriteLogFile(ex001);
                    Close();
                }
            }
            catch (Exception ex)
            {
                Diagnostics.Log(ex);
            }
        }
コード例 #3
0
        private void AxisDetectionTimerCode(object sender, EventArgs e)
        {
            if (sw.ElapsedMilliseconds > 1666)
            {
                Microsoft.DirectX.DirectInput.DeviceList devList =
                    Microsoft.DirectX.DirectInput.Manager.GetDevices(
                        Microsoft.DirectX.DirectInput.DeviceClass.GameControl,
                        Microsoft.DirectX.DirectInput.EnumDevicesFlags.AttachedOnly
                        );

                if (devList.Count != MainWindow.deviceControl.joyAssign.Length)
                {
                    mainWindow.ReloadDevices();
                    Reset();
                    mainWindow.UpdateAxisStatus();
                }

                sw.Reset();
                sw.Start();
            }

            try
            {
                switch (status)
                {
                case Status.GetNeutralPosition:

                    Reset();

                    status = Status.WaitInput;
                    AssignedJoystick.Content = "   AWAITING INPUTS";
                    sw.Start();

                    break;

                case Status.WaitInput:

                    for (int i = 0; i < MainWindow.deviceControl.joyAssign.Length; i++)
                    {
                        for (int ii = 0; ii < 8; ii++)
                        {
                            if (MainWindow.deviceControl.joyAssign[i].JoyAxisState(ii) < Joynum[i].NeutralValue[ii] + CommonConstants.AXISMAX / 4 &
                                MainWindow.deviceControl.joyAssign[i].JoyAxisState(ii) > Joynum[i].NeutralValue[ii] - CommonConstants.AXISMAX / 4)
                            {
                                continue;
                            }
                            devNumTmp        = i;
                            phyAxNumTmp      = ii;
                            status           = Status.ShowAxisStatus;
                            Retry.Content    = "RETRY";
                            Retry.Visibility = Visibility.Visible;

                            if (whoCalledWindow != "Throttle")
                            {
                                continue;
                            }
                            SetAB.Visibility = Visibility.Visible;
                            Idle.Visibility  = Visibility.Visible;

                            if (((InGameAxAssgn)MainWindow.inGameAxis[whoCalledWindow]).GetDeviceNumber() >= 0)
                            {
                                AB   = MainWindow.deviceControl.joyAssign[((InGameAxAssgn)MainWindow.inGameAxis[whoCalledWindow]).GetDeviceNumber()].detentPosition.GetAB();
                                IDLE = MainWindow.deviceControl.joyAssign[((InGameAxAssgn)MainWindow.inGameAxis[whoCalledWindow]).GetDeviceNumber()].detentPosition.GetIDLE();
                            }
                        }
                    }
                    if (sw.ElapsedMilliseconds > 1000)
                    {
                        AssignedJoystick.Content = "";
                    }
                    if (sw.ElapsedMilliseconds > 1666)
                    {
                        AssignedJoystick.Content = "   AWAITING INPUTS";
                        sw.Reset();
                        sw.Start();
                    }

                    break;

                case Status.ShowAxisStatus:

                    if (devNumTmp == -1)
                    {
                        status = Status.GetNeutralPosition;
                        return;
                    }

                    switch (whoCalledWindow)
                    {
                    case "Throttle":
                    case "Throttle_Right":
                    case "Toe_Brake":
                    case "Toe_Brake_Right":
                    case "Intercom":
                    case "COMM_Channel_1":
                    case "COMM_Channel_2":
                    case "MSL_Volume":
                    case "Threat_Volume":
                    case "AI_vs_IVC":
                        if (Invert.IsChecked == false || Invert.IsChecked == null)
                        {
                            invertNum = -1;
                        }
                        else
                        {
                            invertNum = 1;
                        }
                        break;

                    default:
                        if (Invert.IsChecked == false || Invert.IsChecked == null)
                        {
                            invertNum = 1;
                        }
                        else
                        {
                            invertNum = -1;
                        }
                        break;
                    }
                    if (invertNum == 1)
                    {
                        AxisValueProgress.Minimum = CommonConstants.AXISMIN;
                        AxisValueProgress.Maximum = CommonConstants.AXISMAX;
                    }
                    else
                    {
                        AxisValueProgress.Minimum = -CommonConstants.AXISMAX;
                        AxisValueProgress.Maximum = CommonConstants.AXISMIN;
                    }

                    if (devNumTmp == -2)
                    {
                        AxisValueProgress.Value  = (32768 + wheelValue * 1024 / 120) * invertNum;
                        AssignedJoystick.Content = "   MouseWheel";
                        return;
                    }

                    int output = MainWindow.ApplyDeadZone
                                 (
                        MainWindow.deviceControl.joyAssign[devNumTmp].JoyAxisState(phyAxNumTmp),
                        (AxCurve)DeadZone.SelectedIndex,
                        (AxCurve)Saturation.SelectedIndex
                                 );
                    AxisValueProgress.Value  = output * invertNum;
                    AssignedJoystick.Content = "   "
                                               + ((AxisNumName)phyAxNumTmp).ToString().Replace('_', ' ') + " : "
                                               + MainWindow.deviceControl.joyStick[devNumTmp].DeviceInformation.ProductName;

                    if (whoCalledWindow != "Throttle" & whoCalledWindow != "Throttle_Right")
                    {
                        return;
                    }
                    AxisValueProgress.Foreground = new SolidColorBrush(Color.FromArgb(0x80, 0x38, 0x78, 0xA8));
                    check_ABIDLE.Visibility      = Visibility.Hidden;
                    if (CommonConstants.AXISMAX + AxisValueProgress.Value < IDLE)
                    {
                        AxisValueProgress.Foreground = new SolidColorBrush(Color.FromArgb(0x80, 240, 0, 0));
                        check_ABIDLE.Visibility      = Visibility.Visible;
                        check_ABIDLE.Content         = "IDLE CUTOFF";
                    }
                    if (CommonConstants.AXISMAX + AxisValueProgress.Value > AB)
                    {
                        AxisValueProgress.Foreground = new SolidColorBrush(Color.FromArgb(0x80, 0, 240, 0));
                        check_ABIDLE.Visibility      = Visibility.Visible;
                        check_ABIDLE.Content         = "AB";
                    }

                    break;

                default:
                    break;
                }
            }
            catch
            {
                Console.WriteLine("Error on Axis Moving Timer");
            }
        }