/// <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(); }
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); } }
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"); } }