Esempio n. 1
0
        /// <summary>
        /// Get PadSetting from currently selected device.
        /// </summary>
        /// <param name="padIndex">Source pad index.</param>
        public PadSetting GetCurrentPadSetting(MapTo padIndex)
        {
            // Get settings related to PAD.
            var maps = SettingsMap.Where(x => x.MapTo == padIndex).ToArray();

            PropertyInfo[] properties;
            if (!ValidatePropertyNames(maps, out properties))
            {
                return(null);
            }
            var ps = new PadSetting();

            foreach (var p in properties)
            {
                var map = maps.First(x => x.PropertyName == p.Name);
                var key = map.IniPath.Split('\\')[1];
                // Get setting value from the form.
                var v = GetSettingValue(map.Control);
                // If value is default then...
                if (v == map.DefaultValue)
                {
                    // Remove default value.
                    v = null;
                }
                // Set value onto padSetting.
                p.SetValue(ps, v ?? "", null);
            }
            ps.PadSettingChecksum = ps.CleanAndGetCheckSum();
            return(ps);
        }
Esempio n. 2
0
 private void MainDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     lock (selectionLock)
     {
         var grid    = (DataGrid)sender;
         var setting = grid.SelectedItems.Cast <UserSetting>().FirstOrDefault();
         _CurrentUserSetting = setting;
         // Get device attached to user setting.
         _CurrentUserDevice = setting == null
                                 ? new UserDevice()
                                 : SettingsManager.GetDevice(setting.InstanceGuid);
         // Get mappings attached to user setting.
         _CurrentPadSetting = setting == null
                                 ? new PadSetting()
                                 : SettingsManager.GetPadSetting(setting.PadSettingChecksum);
         DPadPanel.SetBinding(_CurrentPadSetting);
         PadListPanel.SetBinding(MappedTo, _CurrentUserSetting);
         GeneralPanel.SetBinding(MappedTo, _CurrentPadSetting);
         AdvancedPanel.SetBinding(_CurrentPadSetting);
         LeftTriggerPanel.SetBinding(_CurrentPadSetting);
         RightTriggerPanel.SetBinding(_CurrentPadSetting);
         LeftThumbXPanel.SetBinding(_CurrentPadSetting);
         LeftThumbYPanel.SetBinding(_CurrentPadSetting);
         RightThumbXPanel.SetBinding(_CurrentPadSetting);
         RightThumbYPanel.SetBinding(_CurrentPadSetting);
         ForceFeedbackPanel.SetBinding(MappedTo, _CurrentPadSetting);
         ForceFeedbackPanel.LeftForceFeedbackMotorPanel.SetBinding(_CurrentPadSetting, 0);
         ForceFeedbackPanel.RightForceFeedbackMotorPanel.SetBinding(_CurrentPadSetting, 1);
         PadFootPanel.SetBinding(MappedTo, _CurrentUserDevice, _CurrentPadSetting);
         SettingsManager.Current.LoadPadSettingsIntoSelectedDevice(MappedTo, _CurrentPadSetting);
         OnSettingChanged?.Invoke(this, new EventArgs <UserSetting>(setting));
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Get PadSetting from currently selected device.
        /// </summary>
        public PadSetting CloneCurrentPadSetting()
        {
            // Get settings related to PAD.
            var maps = SettingsManager.Current.SettingsMap.Where(x => x.MapTo == MappedTo).ToArray();

            PropertyInfo[] properties;
            if (!SettingsManager.ValidatePropertyNames(maps, out properties))
            {
                return(null);
            }
            var ps = new PadSetting();

            foreach (var p in properties)
            {
                var map = maps.FirstOrDefault(x => x.PropertyName == p.Name);
                if (map == null)
                {
                    continue;
                }
                // Get setting value from the form.
                var v = SettingsManager.Current.GetSettingValue(map.Control);
                // Set value onto padSetting.
                p.SetValue(ps, v ?? "", null);
            }
            ps.PadSettingChecksum = ps.CleanAndGetCheckSum();
            return(ps);
        }
Esempio n. 4
0
        public void SyncFormFromPadSetting(MapTo padIndex, PadSetting ps)
        {
            // Get setting maps for specified PAD Control.
            var maps = SettingsMap.Where(x => x.MapTo == padIndex).ToArray();

            PropertyInfo[] properties;
            if (!ValidatePropertyNames(maps, out properties))
            {
                return;
            }
            // Suspend form events (do not track setting changes on the form).
            SuspendEvents();
            foreach (var p in properties)
            {
                var map = maps.First(x => x.PropertyName == p.Name);
                var key = map.IniPath.Split('\\')[1];
                var v   = (string)p.GetValue(ps, null) ?? "";
                // If value is not set then...
                if (string.IsNullOrEmpty(v))
                {
                    // Restore default value.
                    v = map.DefaultValue ?? "";
                }
                LoadSetting(map.Control, key, v);
            }
            // Resume form events (track setting changes on the form).
            ResumeEvents();
        }
Esempio n. 5
0
        /// <summary>
        /// Load PAD settings to form.
        /// </summary>
        /// <param name="padSetting">Settings to read.</param>
        /// <param name="padIndex">Destination pad index.</param>
        public void LoadPadSettingsIntoSelectedDevice(MapTo padIndex, PadSetting ps)
        {
            // Get pad control with settings.
            var padControl = MainForm.Current.PadControls[(int)padIndex - 1];
            // Get selected setting.
            var setting = padControl.GetSelectedSetting();

            // Return if nothing selected.
            if (setting == null)
            {
                return;
            }
            // If setting not supplied then use empty (clear settings).
            if (ps == null)
            {
                ps = new PadSetting();
            }
            LoadPadSettingAndCleanup(setting, ps);
            SyncFormFromPadSetting(padIndex, ps);
            RaiseSettingsChanged(null);
            loadCount++;
            var ev = ConfigLoaded;

            if (ev != null)
            {
                ev(this, new SettingEventArgs(typeof(PadSetting).Name, loadCount));
            }
        }
        public void SetBinding(PadSetting ps, int motor)
        {
            // Unbind first.
            SettingsManager.UnLoadMonitor(DirectionComboBox);
            SettingsManager.UnLoadMonitor(StrengthUpDown);
            SettingsManager.UnLoadMonitor(PeriodUpDown);
            if (ps == null)
            {
                return;
            }
            switch (motor)
            {
            case 0:
                MainGroupBox.Header = "Left Motor(Big, Strong, Low-Frequency)";
                break;

            case 1:
                MainGroupBox.Header = "Right Motor (Small, Gentle, High-Frequency)";
                break;

            default:
                break;
            }
            var converter     = new Converters.PadSettingToIntegerConverter();
            var enumConverter = new Converters.PaddSettingToEnumConverter <ForceEffectDirection>();

            // Set binding.
            SettingsManager.LoadAndMonitor(ps, nameof(ps.LeftMotorDirection), DirectionComboBox, null, enumConverter);
            SettingsManager.LoadAndMonitor(ps, nameof(ps.LeftMotorStrength), StrengthUpDown, null, converter);
            SettingsManager.LoadAndMonitor(ps, nameof(ps.LeftMotorPeriod), PeriodUpDown, null, converter);
        }
Esempio n. 7
0
        /// <summary>
        /// Read PAD settings from INI file.
        /// </summary>
        /// <param name="padSectionName">INI section.</param>
        /// <param name="s">Settings.</param>
        /// <param name="p">PAD Settings.</param>
        /// <remarks>use 'ref' to indicate that objects will be updated inside.</remarks>
        void ReadWritePadSettings(string padSectionName, ref Setting s, ref PadSetting p, bool write)
        {
            s = new Setting();
            p = new PadSetting();
            // Get PAD1 settings data as a reference.
            var items  = SettingsMap.Where(x => x.MapTo == MapTo.Controller1).ToArray();
            var sProps = s.GetType().GetProperties();
            var pProps = p.GetType().GetProperties();
            var ini2   = new Ini(IniFileName);

            foreach (var item in items)
            {
                string key = item.IniPath.Split('\\')[1];
                // Try to find property inside Settings object.
                var sProp = sProps.FirstOrDefault(x => x.Name == item.PropertyName);
                if (sProp != null)
                {
                    if (write)
                    {
                        var sv = (string)sProp.GetValue(s, null) ?? "";
                        // Write value to INI file.
                        ini2.SetValue(padSectionName, key, sv);
                    }
                    else
                    {
                        // Read value from INI file.
                        var sv = ini2.GetValue(padSectionName, key) ?? "";
                        sProp.SetValue(s, sv, null);
                    }
                    continue;
                }
                // Try to find property inside PAD Settings object.
                var pProp = pProps.FirstOrDefault(x => x.Name == item.PropertyName);
                if (pProp != null)
                {
                    if (write)
                    {
                        var pv = (string)pProp.GetValue(p, null) ?? "";
                        // Write value to INI file.
                        ini2.SetValue(padSectionName, key, pv);
                    }
                    else
                    {
                        // Read value from INI file.
                        var pv = ini2.GetValue(padSectionName, key) ?? "";
                        sProp.SetValue(s, pv, null);
                    }
                    continue;
                }
                // Property was not found.
                var message = string.Format("ReadWritePadSettings: Property '{0}' was not found", item.PropertyName);
                // Inform developer with the message.
                MessageBoxForm.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 8
0
 public bool Changed(PadSetting ps)
 {
     return
         (old_ForceType != ps.ForceType ||
          old_LeftPeriod != ps.LeftMotorPeriod ||
          old_RightPeriod != ps.RightMotorPeriod ||
          old_LeftStrength != ps.LeftMotorStrength ||
          old_RightStrength != ps.RightMotorStrength ||
          old_LeftDirection != ps.LeftMotorDirection ||
          old_RightDirection != ps.RightMotorDirection ||
          old_OveralStrength != ps.ForceOverall);
 }
Esempio n. 9
0
 public void SetBinding(MapTo mappedTo, UserDevice userDevice, PadSetting padSetting)
 {
     _MappedTo = mappedTo;
     _UserDevice = userDevice;
     _PadSetting = padSetting;
     var en = padSetting != null;
     ControlsHelper.SetEnabled(CopyButton, en);
     ControlsHelper.SetEnabled(PasteButton, en);
     ControlsHelper.SetEnabled(LoadButton, en);
     ControlsHelper.SetEnabled(AutoButton, en);
     ControlsHelper.SetEnabled(ClearButton, en);
     ControlsHelper.SetEnabled(ResetButton, en);
 }
Esempio n. 10
0
 public void LoadPadSettingAndCleanup(UserSetting setting, PadSetting ps, bool add = false)
 {
     // Link setting with pad setting.
     setting.PadSettingChecksum = ps.PadSettingChecksum;
     // Insert pad setting first, because it will be linked with the setting.
     UpsertPadSettings(ps);
     // Insert setting if not in the list.
     if (add)
     {
         UserSettings.Add(setting);
     }
     // Clean-up pad settings.
     Current.CleanupPadSettings();
 }
Esempio n. 11
0
        private void ClearButton_Click(object sender, RoutedEventArgs e)
        {
            var description = Attributes.GetDescription(_MappedTo);
            var text        = string.Format("Do you want to clear all {0} settings?", description);
            var form        = new MessageBoxWindow();
            var result      = form.ShowDialog(text, "Clear Controller Settings", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (result != MessageBoxResult.Yes)
            {
                return;
            }
            var ps = new PadSetting();

            _PadSetting.Load(ps);
        }
Esempio n. 12
0
        public void SetBinding(PadSetting o)
        {
            // Unbind first.
            SettingsManager.UnLoadMonitor(EnabledCheckBox);
            SettingsManager.UnLoadMonitor(DeadZoneUpDown);
            SettingsManager.UnLoadMonitor(OffsetUpDown);
            if (o == null)
            {
                return;
            }
            // Set binding.
            var converter = new Converters.PaddSettingToIntegerConverter();

            SettingsManager.LoadAndMonitor(o, nameof(o.AxisToDPadEnabled), EnabledCheckBox);
            SettingsManager.LoadAndMonitor(o, nameof(o.AxisToDPadDeadZone), DeadZoneUpDown, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.AxisToDPadOffset), OffsetUpDown, null, converter);
        }
Esempio n. 13
0
        public void SetBinding(PadSetting o)
        {
            // Unbind first.
            SettingsManager.UnLoadMonitor(DeviceSubTypeComboBox);
            SettingsManager.UnLoadMonitor(PassThroughCheckBox);
            //SettingsManager.UnLoadMonitor(ForceFeedbackPassThroughCheckBox);
            if (o == null)
            {
                return;
            }
            // Set binding.
            var converter = new Converters.PaddSettingToEnumConverter <DeviceSubType>();

            SettingsManager.LoadAndMonitor(o, nameof(o.GamePadType), DeviceSubTypeComboBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.PassThrough), PassThroughCheckBox, null, null);
            //SettingsManager.LoadAndMonitor(o, nameof(o.ForcesPassThrough), ForceFeedbackPassThroughCheckBox, null, null);
        }
Esempio n. 14
0
        public void SetBinding(PadSetting ps)
        {
            // Unbind first.
            SettingsManager.UnLoadMonitor(DeviceSubTypeComboBox);
            SettingsManager.UnLoadMonitor(PassThroughCheckBox);
            //SettingsManager.UnLoadMonitor(ForceFeedbackPassThroughCheckBox);
            if (ps == null)
            {
                return;
            }
            // Set binding.
            var enumConverter = new Converters.PadSettingToEnumConverter <DeviceSubType>();
            var boolConverter = new Converters.PadSettingToBoolConverter();

            SettingsManager.LoadAndMonitor(ps, nameof(ps.GamePadType), DeviceSubTypeComboBox, null, enumConverter);
            SettingsManager.LoadAndMonitor(ps, nameof(ps.PassThrough), PassThroughCheckBox, null, boolConverter);
        }
Esempio n. 15
0
        public void SetBinding(PadSetting ps)
        {
            // Unbind first.
            SettingsManager.UnLoadMonitor(EnabledCheckBox);
            SettingsManager.UnLoadMonitor(DeadZoneUpDown);
            SettingsManager.UnLoadMonitor(OffsetUpDown);
            if (ps == null)
            {
                return;
            }
            // Set binding.
            var intConverter  = new Converters.PadSettingToIntegerConverter();
            var boolConverter = new Converters.PadSettingToBoolConverter();

            SettingsManager.LoadAndMonitor(ps, nameof(ps.AxisToDPadEnabled), EnabledCheckBox, null, boolConverter);
            SettingsManager.LoadAndMonitor(ps, nameof(ps.AxisToDPadDeadZone), DeadZoneUpDown, null, intConverter);
            SettingsManager.LoadAndMonitor(ps, nameof(ps.AxisToDPadOffset), OffsetUpDown, null, intConverter);
        }
Esempio n. 16
0
        public string SaveSetting(UserSetting s, PadSetting ps)
        {
            var db       = new x360ceModelContainer();
            var checksum = ps.CleanAndGetCheckSum();

            // Update checksum.
            ps.PadSettingChecksum = checksum;
            // Look for existing PadSetting.
            var pDB = db.PadSettings.FirstOrDefault(x => x.PadSettingChecksum == checksum);

            // If PadSetting doesn't exists then...
            if (pDB == null)
            {
                pDB           = ps;
                pDB.EntityKey = null;
                db.PadSettings.AddObject(pDB);
            }
            // Look for existing setting.
            var sDB = db.UserSettings.FirstOrDefault(x => x.InstanceGuid == s.InstanceGuid && x.FileName == s.FileName && x.FileProductName == s.FileProductName);
            var n   = DateTime.Now;

            if (sDB == null)
            {
                sDB           = s;
                sDB.EntityKey = null;
                // Assign brand new ID.
                s.SettingId    = Guid.NewGuid();
                s.DateCreated  = n;
                s.DateUpdated  = n;
                s.DateSelected = n;
                // Link PadSetting with setting.
                s.PadSettingChecksum = pDB.PadSettingChecksum;
                db.UserSettings.AddObject(sDB);
            }
            db.SaveChanges();
            db.Dispose();
            db = null;
            return("");
        }
Esempio n. 17
0
        public void SavePadSetting(UserSetting setting, PadSetting padSetting)
        {
            var ps = new PadSetting();

            ps.Load(padSetting);
            // If setting doesn't exists then...
            if (!PadSettings.Items.Any(x => x.PadSettingChecksum == ps.PadSettingChecksum))
            {
                // Add setting to configuration.
                lock (PadSettings.SyncRoot)
                    PadSettings.Items.Add(ps);
            }
            // If pad setting checksum changed then...
            if (setting.PadSettingChecksum != ps.PadSettingChecksum)
            {
                // Assign updated checksum.
                setting.PadSettingChecksum = ps.PadSettingChecksum;
                var ud = GetDevice(setting.InstanceGuid);
                setting.Completion = UserSetting.GetCompletionPoints(ps, ud);
            }
            CleanupPadSettings();
        }
Esempio n. 18
0
        /// <summary>
        /// Load PAD settings to form.
        /// </summary>
        /// <param name="padSetting">Settings to read.</param>
        /// <param name="padIndex">Destination pad index.</param>
        public void LoadPadSettingsIntoSelectedDevice(MapTo padIndex, PadSetting ps)
        {
            // Get pad control with settings.
            var padControl = Global._MainWindow.MainPanel.MainBodyPanel.PadControls[(int)padIndex - 1];
            // Get selected setting.
            var setting = padControl.CurrentUserSetting;

            // Return if nothing selected.
            if (setting == null)
            {
                return;
            }
            // If setting not supplied then use empty (clear settings).
            if (ps == null)
            {
                ps = new PadSetting();
            }
            LoadPadSettingAndCleanup(setting, ps);
            SyncFormFromPadSetting(padIndex, ps);
            RaiseSettingsChanged(null);
            loadCount++;
            ConfigLoaded?.Invoke(this, new SettingEventArgs(typeof(PadSetting).Name, loadCount));
        }
Esempio n. 19
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            Guid?checksum = null;

            if (MainTabControl.SelectedTab == PresetsTabPage)
            {
                var row = PresetsGridPanel.PresetsDataGridView.SelectedRows.Cast <DataGridViewRow>().FirstOrDefault();
                if (row != null)
                {
                    var preset = (Preset)row.DataBoundItem;
                    checksum = preset.PadSettingChecksum;
                }
            }
            if (MainTabControl.SelectedTab == SummariesTabPage)
            {
                var row = SummariesGridPanel.SummariesDataGridView.SelectedRows.Cast <DataGridViewRow>().FirstOrDefault();
                if (row != null)
                {
                    var summary = (Summary)row.DataBoundItem;
                    checksum = summary.PadSettingChecksum;
                }
            }
            if (MainTabControl.SelectedTab == SettingsTabPage)
            {
                var row = SettingsGridPanel.SettingsDataGridView.SelectedRows.Cast <DataGridViewRow>().FirstOrDefault();
                if (row != null)
                {
                    var setting = (Setting)row.DataBoundItem;
                    checksum = setting.PadSettingChecksum;
                }
            }
            if (checksum.HasValue)
            {
                SelectedItem = SettingsManager.PadSettings.Items.FirstOrDefault(x => x.PadSettingChecksum == checksum.Value);
            }
            DialogResult = DialogResult.OK;
        }
Esempio n. 20
0
        public string SaveSetting(Setting s, PadSetting ps)
        {
            var checksum = ps.GetCheckSum();
            var db       = new x360ceModelContainer();
            var s1       = db.Settings.FirstOrDefault(x => x.InstanceGuid == s.InstanceGuid && x.FileName == s.FileName && x.FileProductName == s.FileProductName);
            var n        = DateTime.Now;

            if (s1 == null)
            {
                s1             = new Setting();
                s1.SettingId   = Guid.NewGuid();
                s1.DateCreated = n;
                db.Settings.AddObject(s1);
            }
            s1.Comment            = s.Comment;
            s1.DateUpdated        = n;
            s1.DateSelected       = n;
            s1.DeviceType         = s.DeviceType;
            s1.FileName           = s.FileName;
            s1.FileProductName    = s.FileProductName;
            s1.InstanceGuid       = s.InstanceGuid;
            s1.InstanceName       = s.InstanceName;
            s1.ProductGuid        = s.ProductGuid;
            s1.ProductName        = s.ProductName;
            s1.IsEnabled          = s.IsEnabled;
            s1.PadSettingChecksum = checksum;
            // Save Pad Settings.
            var p1 = db.PadSettings.FirstOrDefault(x => x.PadSettingChecksum == checksum);

            if (p1 == null)
            {
                p1 = new PadSetting();
                p1.PadSettingChecksum = checksum;
                db.PadSettings.AddObject(p1);
            }
            p1.AxisToDPadDeadZone = ps.AxisToDPadDeadZone;
            p1.AxisToDPadEnabled  = ps.AxisToDPadEnabled;
            p1.AxisToDPadOffset   = ps.AxisToDPadOffset;
            p1.ButtonA            = ps.ButtonA;
            p1.ButtonB            = ps.ButtonB;
            p1.ButtonBig          = string.IsNullOrEmpty(ps.ButtonBig) ? "" : ps.ButtonBig;
            p1.ButtonGuide        = string.IsNullOrEmpty(ps.ButtonGuide) ? "" : ps.ButtonGuide;
            p1.ButtonBack         = ps.ButtonBack;
            p1.ButtonStart        = ps.ButtonStart;
            p1.ButtonX            = ps.ButtonX;
            p1.ButtonY            = ps.ButtonY;
            p1.DPad                    = ps.DPad;
            p1.DPadDown                = ps.DPadDown;
            p1.DPadLeft                = ps.DPadLeft;
            p1.DPadRight               = ps.DPadRight;
            p1.DPadUp                  = ps.DPadUp;
            p1.ForceEnable             = ps.ForceEnable;
            p1.ForceOverall            = ps.ForceOverall;
            p1.ForceSwapMotor          = ps.ForceSwapMotor;
            p1.ForceType               = ps.ForceType;
            p1.GamePadType             = ps.GamePadType;
            p1.LeftMotorPeriod         = ps.LeftMotorPeriod;
            p1.LeftMotorStrength       = string.IsNullOrEmpty(ps.LeftMotorStrength) ? "100" : ps.LeftMotorStrength;
            p1.LeftMotorDirection      = string.IsNullOrEmpty(ps.LeftMotorDirection) ? "0" : ps.LeftMotorDirection;
            p1.LeftShoulder            = ps.LeftShoulder;
            p1.LeftThumbAntiDeadZoneX  = ps.LeftThumbAntiDeadZoneX;
            p1.LeftThumbAntiDeadZoneY  = ps.LeftThumbAntiDeadZoneY;
            p1.LeftThumbAxisX          = ps.LeftThumbAxisX;
            p1.LeftThumbAxisY          = ps.LeftThumbAxisY;
            p1.LeftThumbButton         = ps.LeftThumbButton;
            p1.LeftThumbDeadZoneX      = ps.LeftThumbDeadZoneX;
            p1.LeftThumbDeadZoneY      = ps.LeftThumbDeadZoneY;
            p1.LeftThumbLinearX        = string.IsNullOrEmpty(ps.LeftThumbLinearX) ? "" : ps.LeftThumbLinearX;
            p1.LeftThumbLinearY        = string.IsNullOrEmpty(ps.LeftThumbLinearY) ? "" : ps.LeftThumbLinearY;
            p1.LeftThumbDown           = ps.LeftThumbDown;
            p1.LeftThumbLeft           = ps.LeftThumbLeft;
            p1.LeftThumbRight          = ps.LeftThumbRight;
            p1.LeftThumbUp             = ps.LeftThumbUp;
            p1.LeftTrigger             = ps.LeftTrigger;
            p1.LeftTriggerDeadZone     = ps.LeftTriggerDeadZone;
            p1.PassThrough             = ps.PassThrough;
            p1.RightMotorPeriod        = ps.RightMotorPeriod;
            p1.RightMotorStrength      = string.IsNullOrEmpty(ps.RightMotorStrength) ? "100" : ps.RightMotorStrength;
            p1.RightMotorDirection     = string.IsNullOrEmpty(ps.RightMotorDirection) ? "0" : ps.RightMotorDirection;
            p1.RightShoulder           = ps.RightShoulder;
            p1.RightThumbAntiDeadZoneX = ps.RightThumbAntiDeadZoneX;
            p1.RightThumbAntiDeadZoneY = ps.RightThumbAntiDeadZoneY;
            p1.RightThumbLinearX       = string.IsNullOrEmpty(ps.RightThumbLinearX) ? "" : ps.RightThumbLinearX;
            p1.RightThumbLinearY       = string.IsNullOrEmpty(ps.RightThumbLinearY) ? "" : ps.RightThumbLinearY;
            p1.RightThumbAxisX         = ps.RightThumbAxisX;
            p1.RightThumbAxisY         = ps.RightThumbAxisY;
            p1.RightThumbButton        = ps.RightThumbButton;
            p1.RightThumbDeadZoneX     = ps.RightThumbDeadZoneX;
            p1.RightThumbDeadZoneY     = ps.RightThumbDeadZoneY;
            p1.RightThumbDown          = ps.RightThumbDown;
            p1.RightThumbLeft          = ps.RightThumbLeft;
            p1.RightThumbRight         = ps.RightThumbRight;
            p1.RightThumbUp            = ps.RightThumbUp;
            p1.RightTrigger            = ps.RightTrigger;
            p1.RightTriggerDeadZone    = ps.RightTriggerDeadZone;
            // Axis to button dead-zones.
            p1.ButtonADeadZone          = ps.ButtonADeadZone ?? "";
            p1.ButtonBDeadZone          = ps.ButtonBDeadZone ?? "";
            p1.ButtonBackDeadZone       = ps.ButtonBackDeadZone ?? "";
            p1.ButtonStartDeadZone      = ps.ButtonStartDeadZone ?? "";
            p1.ButtonXDeadZone          = ps.ButtonXDeadZone ?? "";
            p1.ButtonYDeadZone          = ps.ButtonYDeadZone ?? "";
            p1.LeftThumbButtonDeadZone  = ps.LeftThumbButtonDeadZone ?? "";
            p1.RightThumbButtonDeadZone = ps.RightThumbButtonDeadZone ?? "";
            p1.LeftShoulderDeadZone     = ps.LeftShoulderDeadZone ?? "";
            p1.RightShoulderDeadZone    = ps.RightShoulderDeadZone ?? "";
            p1.DPadDownDeadZone         = ps.DPadDownDeadZone ?? "";
            p1.DPadLeftDeadZone         = ps.DPadLeftDeadZone ?? "";
            p1.DPadRightDeadZone        = ps.DPadRightDeadZone ?? "";
            p1.DPadUpDeadZone           = ps.DPadUpDeadZone ?? "";
            db.SaveChanges();
            db.Dispose();
            db = null;
            return("");
        }
Esempio n. 21
0
        /// <summary>
        /// Set INI settings from PadSetting object by device Instance GUID.
        /// </summary>
        /// <param name="instanceGuid">Instance GUID.</param>
        /// <returns>PadSettings object.</returns>
        public void SetPadSetting(string padSectionName, PadSetting ps)
        {
            var ini2 = new Ini(IniFileName);

            //ps.PadSettingChecksum = Guid.Empty;
            ini2.SetValue(padSectionName, SettingName.AxisToDPadDeadZone, ps.AxisToDPadDeadZone);
            ini2.SetValue(padSectionName, SettingName.AxisToDPadEnabled, ps.AxisToDPadEnabled);
            ini2.SetValue(padSectionName, SettingName.AxisToDPadOffset, ps.AxisToDPadOffset);
            ini2.SetValue(padSectionName, SettingName.ButtonA, ps.ButtonA);
            ini2.SetValue(padSectionName, SettingName.ButtonB, ps.ButtonB);
            ini2.SetValue(padSectionName, SettingName.ButtonGuide, ps.ButtonBig);
            ini2.SetValue(padSectionName, SettingName.ButtonBack, ps.ButtonBack);
            ini2.SetValue(padSectionName, SettingName.ButtonStart, ps.ButtonStart);
            ini2.SetValue(padSectionName, SettingName.ButtonX, ps.ButtonX);
            ini2.SetValue(padSectionName, SettingName.ButtonY, ps.ButtonY);
            ini2.SetValue(padSectionName, SettingName.DPad, ps.DPad);
            ini2.SetValue(padSectionName, SettingName.DPadDown, ps.DPadDown);
            ini2.SetValue(padSectionName, SettingName.DPadLeft, ps.DPadLeft);
            ini2.SetValue(padSectionName, SettingName.DPadRight, ps.DPadRight);
            ini2.SetValue(padSectionName, SettingName.DPadUp, ps.DPadUp);
            ini2.SetValue(padSectionName, SettingName.ForceEnable, ps.ForceEnable);
            ini2.SetValue(padSectionName, SettingName.ForceOverall, ps.ForceOverall);
            ini2.SetValue(padSectionName, SettingName.ForceSwapMotor, ps.ForceSwapMotor);
            ini2.SetValue(padSectionName, SettingName.ForceType, ps.ForceType);
            ini2.SetValue(padSectionName, SettingName.DeviceSubType, ps.GamePadType);
            ini2.SetValue(padSectionName, SettingName.LeftMotorPeriod, ps.LeftMotorPeriod);
            ini2.SetValue(padSectionName, SettingName.LeftMotorStrength, ps.LeftMotorStrength);
            ini2.SetValue(padSectionName, SettingName.LeftShoulder, ps.LeftShoulder);
            ini2.SetValue(padSectionName, SettingName.LeftThumbAntiDeadZoneX, ps.LeftThumbAntiDeadZoneX);
            ini2.SetValue(padSectionName, SettingName.LeftThumbAntiDeadZoneY, ps.LeftThumbAntiDeadZoneY);
            ini2.SetValue(padSectionName, SettingName.LeftThumbLinearX, ps.LeftThumbLinearX);
            ini2.SetValue(padSectionName, SettingName.LeftThumbLinearY, ps.LeftThumbLinearY);
            ini2.SetValue(padSectionName, SettingName.LeftThumbAxisX, ps.LeftThumbAxisX);
            ini2.SetValue(padSectionName, SettingName.LeftThumbAxisY, ps.LeftThumbAxisY);
            ini2.SetValue(padSectionName, SettingName.LeftThumbButton, ps.LeftThumbButton);
            ini2.SetValue(padSectionName, SettingName.LeftThumbDeadZoneX, ps.LeftThumbDeadZoneX);
            ini2.SetValue(padSectionName, SettingName.LeftThumbDeadZoneY, ps.LeftThumbDeadZoneY);
            ini2.SetValue(padSectionName, SettingName.LeftThumbDown, ps.LeftThumbDown);
            ini2.SetValue(padSectionName, SettingName.LeftThumbLeft, ps.LeftThumbLeft);
            ini2.SetValue(padSectionName, SettingName.LeftThumbRight, ps.LeftThumbRight);
            ini2.SetValue(padSectionName, SettingName.LeftThumbUp, ps.LeftThumbUp);
            ini2.SetValue(padSectionName, SettingName.LeftTrigger, ps.LeftTrigger);
            ini2.SetValue(padSectionName, SettingName.LeftTriggerDeadZone, ps.LeftTriggerDeadZone);
            ini2.SetValue(padSectionName, SettingName.PassThrough, ps.PassThrough);
            ini2.SetValue(padSectionName, SettingName.RightMotorPeriod, ps.RightMotorPeriod);
            ini2.SetValue(padSectionName, SettingName.RightMotorStrength, ps.RightMotorStrength);
            ini2.SetValue(padSectionName, SettingName.RightShoulder, ps.RightShoulder);
            ini2.SetValue(padSectionName, SettingName.RightThumbAntiDeadZoneX, ps.RightThumbAntiDeadZoneX);
            ini2.SetValue(padSectionName, SettingName.RightThumbAntiDeadZoneY, ps.RightThumbAntiDeadZoneY);
            ini2.SetValue(padSectionName, SettingName.RightThumbLinearX, ps.RightThumbLinearX);
            ini2.SetValue(padSectionName, SettingName.RightThumbLinearY, ps.RightThumbLinearY);
            ini2.SetValue(padSectionName, SettingName.RightThumbAxisX, ps.RightThumbAxisX);
            ini2.SetValue(padSectionName, SettingName.RightThumbAxisY, ps.RightThumbAxisY);
            ini2.SetValue(padSectionName, SettingName.RightThumbButton, ps.RightThumbButton);
            ini2.SetValue(padSectionName, SettingName.RightThumbDeadZoneX, ps.RightThumbDeadZoneX);
            ini2.SetValue(padSectionName, SettingName.RightThumbDeadZoneY, ps.RightThumbDeadZoneY);
            ini2.SetValue(padSectionName, SettingName.RightThumbDown, ps.RightThumbDown);
            ini2.SetValue(padSectionName, SettingName.RightThumbLeft, ps.RightThumbLeft);
            ini2.SetValue(padSectionName, SettingName.RightThumbRight, ps.RightThumbRight);
            ini2.SetValue(padSectionName, SettingName.RightThumbUp, ps.RightThumbUp);
            ini2.SetValue(padSectionName, SettingName.RightTrigger, ps.RightTrigger);
            ini2.SetValue(padSectionName, SettingName.RightTriggerDeadZone, ps.RightTriggerDeadZone);
        }
Esempio n. 22
0
        /// <summary>
        /// Get PadSetting object from INI by device Instance GUID.
        /// </summary>
        /// <param name="instanceGuid">Instance GUID.</param>
        /// <returns>PadSettings object.</returns>
        public PadSetting GetPadSetting(string padSectionName)
        {
            var ini2 = new Ini(IniFileName);
            var ps   = new PadSetting();

            ps.PadSettingChecksum = Guid.Empty;
            ps.AxisToDPadDeadZone = ini2.GetValue(padSectionName, SettingName.AxisToDPadDeadZone);
            ps.AxisToDPadEnabled  = ini2.GetValue(padSectionName, SettingName.AxisToDPadEnabled);
            ps.AxisToDPadOffset   = ini2.GetValue(padSectionName, SettingName.AxisToDPadOffset);
            ps.ButtonA            = ini2.GetValue(padSectionName, SettingName.ButtonA);
            ps.ButtonB            = ini2.GetValue(padSectionName, SettingName.ButtonB);
            ps.ButtonGuide        = ini2.GetValue(padSectionName, SettingName.ButtonGuide);
            ps.ButtonBig          = ini2.GetValue(padSectionName, SettingName.ButtonBig);
            ps.ButtonBack         = ini2.GetValue(padSectionName, SettingName.ButtonBack);
            ps.ButtonStart        = ini2.GetValue(padSectionName, SettingName.ButtonStart);
            ps.ButtonX            = ini2.GetValue(padSectionName, SettingName.ButtonX);
            ps.ButtonY            = ini2.GetValue(padSectionName, SettingName.ButtonY);
            ps.DPad                    = ini2.GetValue(padSectionName, SettingName.DPad);
            ps.DPadDown                = ini2.GetValue(padSectionName, SettingName.DPadDown);
            ps.DPadLeft                = ini2.GetValue(padSectionName, SettingName.DPadLeft);
            ps.DPadRight               = ini2.GetValue(padSectionName, SettingName.DPadRight);
            ps.DPadUp                  = ini2.GetValue(padSectionName, SettingName.DPadUp);
            ps.ForceEnable             = ini2.GetValue(padSectionName, SettingName.ForceEnable);
            ps.ForceOverall            = ini2.GetValue(padSectionName, SettingName.ForceOverall);
            ps.ForceSwapMotor          = ini2.GetValue(padSectionName, SettingName.ForceSwapMotor);
            ps.ForceType               = ini2.GetValue(padSectionName, SettingName.ForceType);
            ps.GamePadType             = ini2.GetValue(padSectionName, SettingName.DeviceSubType);
            ps.LeftMotorPeriod         = ini2.GetValue(padSectionName, SettingName.LeftMotorPeriod);
            ps.LeftMotorStrength       = ini2.GetValue(padSectionName, SettingName.LeftMotorStrength);
            ps.LeftShoulder            = ini2.GetValue(padSectionName, SettingName.LeftShoulder);
            ps.LeftThumbAntiDeadZoneX  = ini2.GetValue(padSectionName, SettingName.LeftThumbAntiDeadZoneX);
            ps.LeftThumbAntiDeadZoneY  = ini2.GetValue(padSectionName, SettingName.LeftThumbAntiDeadZoneY);
            ps.LeftThumbLinearX        = ini2.GetValue(padSectionName, SettingName.LeftThumbLinearX);
            ps.LeftThumbLinearY        = ini2.GetValue(padSectionName, SettingName.LeftThumbLinearY);
            ps.LeftThumbAxisX          = ini2.GetValue(padSectionName, SettingName.LeftThumbAxisX);
            ps.LeftThumbAxisY          = ini2.GetValue(padSectionName, SettingName.LeftThumbAxisY);
            ps.LeftThumbButton         = ini2.GetValue(padSectionName, SettingName.LeftThumbButton);
            ps.LeftThumbDeadZoneX      = ini2.GetValue(padSectionName, SettingName.LeftThumbDeadZoneX);
            ps.LeftThumbDeadZoneY      = ini2.GetValue(padSectionName, SettingName.LeftThumbDeadZoneY);
            ps.LeftThumbDown           = ini2.GetValue(padSectionName, SettingName.LeftThumbDown);
            ps.LeftThumbLeft           = ini2.GetValue(padSectionName, SettingName.LeftThumbLeft);
            ps.LeftThumbRight          = ini2.GetValue(padSectionName, SettingName.LeftThumbRight);
            ps.LeftThumbUp             = ini2.GetValue(padSectionName, SettingName.LeftThumbUp);
            ps.LeftTrigger             = ini2.GetValue(padSectionName, SettingName.LeftTrigger);
            ps.LeftTriggerDeadZone     = ini2.GetValue(padSectionName, SettingName.LeftTriggerDeadZone);
            ps.PassThrough             = ini2.GetValue(padSectionName, SettingName.PassThrough);
            ps.RightMotorPeriod        = ini2.GetValue(padSectionName, SettingName.RightMotorPeriod);
            ps.RightMotorStrength      = ini2.GetValue(padSectionName, SettingName.RightMotorStrength);
            ps.RightShoulder           = ini2.GetValue(padSectionName, SettingName.RightShoulder);
            ps.RightThumbAntiDeadZoneX = ini2.GetValue(padSectionName, SettingName.RightThumbAntiDeadZoneX);
            ps.RightThumbAntiDeadZoneY = ini2.GetValue(padSectionName, SettingName.RightThumbAntiDeadZoneY);
            ps.RightThumbAxisX         = ini2.GetValue(padSectionName, SettingName.RightThumbAxisX);
            ps.RightThumbAxisY         = ini2.GetValue(padSectionName, SettingName.RightThumbAxisY);
            ps.RightThumbButton        = ini2.GetValue(padSectionName, SettingName.RightThumbButton);
            ps.RightThumbDeadZoneX     = ini2.GetValue(padSectionName, SettingName.RightThumbDeadZoneX);
            ps.RightThumbDeadZoneY     = ini2.GetValue(padSectionName, SettingName.RightThumbDeadZoneY);
            ps.RightThumbLinearX       = ini2.GetValue(padSectionName, SettingName.RightThumbLinearX);
            ps.RightThumbLinearY       = ini2.GetValue(padSectionName, SettingName.RightThumbLinearY);
            ps.RightThumbDown          = ini2.GetValue(padSectionName, SettingName.RightThumbDown);
            ps.RightThumbLeft          = ini2.GetValue(padSectionName, SettingName.RightThumbLeft);
            ps.RightThumbRight         = ini2.GetValue(padSectionName, SettingName.RightThumbRight);
            ps.RightThumbUp            = ini2.GetValue(padSectionName, SettingName.RightThumbUp);
            ps.RightTrigger            = ini2.GetValue(padSectionName, SettingName.RightTrigger);
            ps.RightTriggerDeadZone    = ini2.GetValue(padSectionName, SettingName.RightTriggerDeadZone);
            return(ps);
        }
Esempio n. 23
0
        public static PadSetting GetAutoPreset(UserDevice ud)
        {
            var ps = new PadSetting();

            if (ud == null)
            {
                return(ps);
            }
            var objects = ud.DeviceObjects;

            if (objects == null)
            {
                return(ps);
            }
            var list = objects.ToList();
            // Get information about device.
            var o          = list.FirstOrDefault(x => x.Type == ObjectGuid.RxAxis);
            var deviceType = (SharpDX.DirectInput.DeviceType)ud.CapType;

            // If Right thumb triggers are missing then...
            if (deviceType == DeviceType.Gamepad && o == null)
            {
                // Logitech RumblePad 2 USB
                ps.ButtonA          = GetButtonValue(list, 1, true, "Cross");
                ps.ButtonB          = GetButtonValue(list, 2, true, "Circle");
                ps.ButtonX          = GetButtonValue(list, 0, true, "Square");
                ps.ButtonY          = GetButtonValue(list, 3, true, "Triangle");
                ps.LeftShoulder     = GetButtonValue(list, 4, true, "L1");
                ps.RightShoulder    = GetButtonValue(list, 5, true, "R1");
                ps.ButtonBack       = GetButtonValue(list, 8, true, "Select", "Back");
                ps.ButtonStart      = GetButtonValue(list, 9, true, "Start");
                ps.LeftThumbButton  = GetButtonValue(list, 10, true, "Left Paddle");
                ps.RightThumbButton = GetButtonValue(list, 11, true, "Right Paddle");
                // Triggers.
                ps.LeftTrigger  = GetButtonValue(list, 6, true, "L2");
                ps.RightTrigger = GetButtonValue(list, 7, true, "R2");
                // Right Thumb.
                ps.RightThumbAxisX = GetAxisValue(list, false, ObjectGuid.ZAxis, true);
                ps.RightThumbAxisY = GetAxisValue(list, true, ObjectGuid.RzAxis, true);
            }
            else
            {
                // ----------------------------------------------------------------------------------------------
                // Controller (Xbox One For Windows)
                // ----------------------------------------------------------------------------------------------
                // Offset   Usage  Instance  Guid           Name                            Flags
                // ------  ------  --------  -------------  ------------------------------  ---------------------
                //      0      49         1  YAxis          Y Axis                          AbsoluteAxis
                //      0       5         0  Unknown        Collection 0 - Game Pad         Collection, NoData
                //      0       0         1  Unknown        Collection 1                    Collection, NoData
                //      0       0         2  Unknown        Collection 2                    Collection, NoData
                //      0       0         3  Unknown        Collection 3                    Collection, NoData
                //      0     128         4  Unknown        Collection 4 - System Controls  Collection, NoData
                //      4      48         0  XAxis          X Axis                          AbsoluteAxis
                //      8      52         4  RyAxis         Y Rotation                      AbsoluteAxis
                //     12      51         3  RxAxis         X Rotation                      AbsoluteAxis
                //     16      50         2  ZAxis          Z Axis                          AbsoluteAxis
                //     20      53         5  RzAxis         Z Rotation                      AbsoluteAxis
                //     24      57         0  PovController  Hat Switch                      PointOfViewController
                //     32     151        19  Unknown        DC Enable Actuators             NoData, Output
                //     36       1        20  Unknown        Physical Interface Device       NoData, Output
                //     40     112        21  Unknown        Magnitude                       NoData, Output
                //     44      80        22  Unknown        Duration                        NoData, Output
                //     48     167        23  Unknown        Start Delay                     NoData, Output
                //     52     124        24  Unknown        Loop Count                      NoData, Output
                //     56       1         0  Button         Button 0                        PushButton
                //     57       2         1  Button         Button 1                        PushButton
                //     58       3         2  Button         Button 2                        PushButton
                //     59       4         3  Button         Button 3                        PushButton
                //     60       5         4  Button         Button 4                        PushButton
                //     61       6         5  Button         Button 5                        PushButton
                //     62       7         6  Button         Button 6                        PushButton
                //     63       8         7  Button         Button 7                        PushButton
                //     64       9         8  Button         Button 8                        PushButton
                //     65      10         9  Button         Button 9                        PushButton
                //     66     133        10  Button         System Main Menu                PushButton

                ps.ButtonA          = GetButtonValue(list, 0, true, "Cross");
                ps.ButtonB          = GetButtonValue(list, 1, true, "Circle");
                ps.ButtonX          = GetButtonValue(list, 2, true, "Square", "SPACE");        // Jump/Kick
                ps.ButtonY          = GetButtonValue(list, 3, true, "Triangle");
                ps.LeftShoulder     = GetButtonValue(list, 4, true, "L1");
                ps.RightShoulder    = GetButtonValue(list, 5, true, "R1");
                ps.ButtonBack       = GetButtonValue(list, 6, true, "Select", "Back");
                ps.ButtonStart      = GetButtonValue(list, 7, true, "Start");
                ps.LeftThumbButton  = GetButtonValue(list, 8, true, "Left Paddle");
                ps.RightThumbButton = GetButtonValue(list, 9, true, "Right Paddle");
                //Combined pedals
                // Triggers.
                ps.LeftTrigger  = GetAxisValue(list, false, ObjectGuid.ZAxis, true, "L2");
                ps.RightTrigger = GetAxisValue(list, false, ObjectGuid.RzAxis, true, "R2");
                // Right Thumb.
                ps.RightThumbAxisX = GetAxisValue(list, false, ObjectGuid.RxAxis, true);
                // Y is inverted by default.
                ps.RightThumbAxisY = GetAxisValue(list, true, ObjectGuid.RyAxis, true);
            }
            // Right Thumb.
            ps.LeftThumbAxisX = GetAxisValue(list, false, ObjectGuid.XAxis, true, "Wheel axis");
            // Y is inverted by default.
            ps.LeftThumbAxisY = GetAxisValue(list, true, ObjectGuid.YAxis, true);
            // D-Pad
            o       = list.FirstOrDefault(x => x.Type == ObjectGuid.PovController);
            ps.DPad = o == null ? "" : string.Format("{0}{1}", SettingName.SType.POV, o.Instance + 1);
            ps.PadSettingChecksum = ps.CleanAndGetCheckSum();
            return(ps);
        }
Esempio n. 24
0
 public void SaveSettingAsync(Setting s, PadSetting ps, object userState = null)
 {
     InvokeAsync("SaveSetting", SaveSettingCompleted, userState, new object[] { s, ps });
 }
Esempio n. 25
0
 public string SaveSetting(Setting s, PadSetting ps)
 {
     object[] results = Invoke("SaveSetting", new object[] { s, ps });
     return((string)results[0]);
 }
Esempio n. 26
0
        public void SetBinding(MapTo mappedTo, PadSetting o)
        {
            _MappedTo = mappedTo;
            if (_padSetting != null)
            {
                _padSetting.PropertyChanged -= _padSetting_PropertyChanged;
            }
            // Unbind right side controls.
            SettingsManager.UnLoadMonitor(LeftTriggerTextBox);
            SettingsManager.UnLoadMonitor(LeftShoulderTextBox);
            SettingsManager.UnLoadMonitor(ButtonBackTextBox);
            SettingsManager.UnLoadMonitor(ButtonStartTextBox);
            SettingsManager.UnLoadMonitor(ButtonGuideTextBox);
            SettingsManager.UnLoadMonitor(DPadTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbAxisXTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbAxisYTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbButtonTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbUpTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbLeftTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbRightTextBox);
            SettingsManager.UnLoadMonitor(LeftThumbDownTextBox);
            // Unbind middle controls.
            SettingsManager.UnLoadMonitor(DPadUpTextBox);
            SettingsManager.UnLoadMonitor(DPadLeftTextBox);
            SettingsManager.UnLoadMonitor(DPadRightTextBox);
            SettingsManager.UnLoadMonitor(DPadDownTextBox);
            // Unbind right side controls.
            SettingsManager.UnLoadMonitor(RightTriggerTextBox);
            SettingsManager.UnLoadMonitor(RightShoulderTextBox);
            SettingsManager.UnLoadMonitor(ButtonYTextBox);
            SettingsManager.UnLoadMonitor(ButtonXTextBox);
            SettingsManager.UnLoadMonitor(ButtonBTextBox);
            SettingsManager.UnLoadMonitor(ButtonATextBox);
            SettingsManager.UnLoadMonitor(RightThumbAxisXTextBox);
            SettingsManager.UnLoadMonitor(RightThumbAxisYTextBox);
            SettingsManager.UnLoadMonitor(RightThumbButtonTextBox);
            SettingsManager.UnLoadMonitor(RightThumbUpTextBox);
            SettingsManager.UnLoadMonitor(RightThumbRightTextBox);
            SettingsManager.UnLoadMonitor(RightThumbRightTextBox);
            SettingsManager.UnLoadMonitor(RightThumbDownTextBox);
            if (o == null)
            {
                return;
            }
            _padSetting = o;
            var converter = new Converters.PaddSettingToText();

            // Bind right side controls.
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftTrigger), LeftTriggerTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftShoulder), LeftShoulderTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonBack), ButtonBackTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonStart), ButtonStartTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonGuide), ButtonGuideTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.DPad), DPadTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbAxisX), LeftThumbAxisXTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbAxisY), LeftThumbAxisYTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbButton), LeftThumbButtonTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbUp), LeftThumbUpTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbLeft), LeftThumbLeftTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbRight), LeftThumbRightTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.LeftThumbDown), LeftThumbDownTextBox, null, converter);
            // Bind middle controls.
            SettingsManager.LoadAndMonitor(o, nameof(o.DPadUp), DPadUpTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.DPadLeft), DPadLeftTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.DPadRight), DPadRightTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.DPadDown), DPadDownTextBox, null, converter);
            // Bind right side controls.
            SettingsManager.LoadAndMonitor(o, nameof(o.RightTrigger), RightTriggerTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightShoulder), RightShoulderTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonY), ButtonYTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonX), ButtonXTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonB), ButtonBTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.ButtonA), ButtonATextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbAxisX), RightThumbAxisXTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbAxisY), RightThumbAxisYTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbButton), RightThumbButtonTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbUp), RightThumbUpTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbRight), RightThumbRightTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbRight), RightThumbRightTextBox, null, converter);
            SettingsManager.LoadAndMonitor(o, nameof(o.RightThumbDown), RightThumbDownTextBox, null, converter);
            _padSetting.PropertyChanged += _padSetting_PropertyChanged;
        }
Esempio n. 27
0
 /// <summary>
 /// Read PAD settings from INI file.
 /// </summary>
 /// <param name="padSectionName">INI section.</param>
 /// <param name="s">Settings.</param>
 /// <param name="p">PAD Settings.</param>
 public void ReadPadSettingsFromIni(string padSectionName, out Setting s, out PadSetting p)
 {
     s = new Setting();
     p = new PadSetting();
     ReadWritePadSettings(padSectionName, ref s, ref p, false);
 }
Esempio n. 28
0
 /// <summary>
 /// Write PAD settings to INI file.
 /// </summary>
 /// <param name="padSectionName">INI section.</param>
 /// <param name="s">Settings.</param>
 /// <param name="p">PAD Settings.</param>
 public void WritePadSettingsToIni(string padSectionName, Setting s, PadSetting p)
 {
     ReadWritePadSettings(padSectionName, ref s, ref p, true);
 }
Esempio n. 29
0
 public string SaveSetting(UserSetting s, PadSetting ps)
 {
     return(Invoke <string>("SaveSetting", s, ps));
 }
Esempio n. 30
0
        public static PadSetting GetAutoPreset(UserDevice ud)
        {
            var ps = new PadSetting();

            if (ud == null)
            {
                return(ps);
            }
            var objects = ud.DeviceObjects;

            if (objects == null)
            {
                return(ps);
            }
            var list = objects.ToList();
            // Get information about device.
            var deviceType = (SharpDX.DirectInput.DeviceType)ud.CapType;

            if (deviceType == DeviceType.Mouse)
            {
                // Offset  Type    Aspect    Flags         Instance  Name
                // ------  ------  --------  ------------  --------  --------
                //      0  XAxis   Position  RelativeAxis         0  X-axis
                //      4  YAxis   Position  RelativeAxis         1  Y-axis
                //      8  ZAxis   Position  RelativeAxis         2  Wheel
                //     12  Button            PushButton           3  Button 0
                //     13  Button            PushButton           4  Button 1
                //     14  Button            PushButton           5  Button 2
                //     15  Button            PushButton           6  Button 3
                //     16  Button            PushButton           7  Button 4
                //     17  Button            PushButton           8  Button 5
                //     18  Button            PushButton           9  Button 6
                //     19  Button            PushButton          10  Button 7
                //
                ps.ButtonA          = GetButtonValue(list, 0, true, "Button 0");
                ps.ButtonB          = GetButtonValue(list, 1, true, "Button 1");
                ps.ButtonX          = GetButtonValue(list, 2, true, "Button 2");
                ps.ButtonY          = GetButtonValue(list, 3, true, "Button 3");
                ps.LeftShoulder     = GetButtonValue(list, 4, true, "Button 4");
                ps.RightShoulder    = GetButtonValue(list, 5, true, "Button 5");
                ps.ButtonBack       = GetButtonValue(list, 6, true, "Button 6");
                ps.ButtonStart      = GetButtonValue(list, 7, true, "Button 7");
                ps.LeftThumbButton  = GetButtonValue(list, 8, true, "Button 8");
                ps.RightThumbButton = GetButtonValue(list, 9, true, "Button 9");
                // Left Thumb (Look).
                ps.LeftThumbAxisX = GetAxisValue(list, false, false, ObjectGuid.XAxis, true, "X-Axis");
                ps.LeftThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.YAxis, true, "Y-Axis");
                // Wheel.
                ps.RightThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.ZAxis, true, "Wheel");
            }
            else if (deviceType == DeviceType.Keyboard)
            {
                ps.ButtonX        = GetButtonValue(list, null, true, "^SPACE$");          // Jump/Kick
                ps.LeftThumbUp    = GetButtonValue(list, null, true, "^W$");              // Move Forward
                ps.LeftThumbLeft  = GetButtonValue(list, null, true, "^A$");              // Move Left
                ps.LeftThumbDown  = GetButtonValue(list, null, true, "^S$");              // Move Backward
                ps.LeftThumbRight = GetButtonValue(list, null, true, "^D$");              // Move Right
                //ps.DPadUp = GetButtonValue(list, null, true, "^$"); // Phone Up
                //ps.DPadDown = GetButtonValue(list, null, true, "^]$"); // Phone Down
                ps.DPadLeft  = GetButtonValue(list, null, true, "^\\[$");                // Previous Weapon
                ps.DPadRight = GetButtonValue(list, null, true, "^\\]$");                // Next Weapon
            }
            else
            {
                // ----------------------------------------------------------------------------------------------
                // Controller (Xbox One For Windows)
                // ----------------------------------------------------------------------------------------------
                // Offset   Usage  Instance  Guid           Name                            Flags
                // ------  ------  --------  -------------  ------------------------------  ---------------------
                //      0      49         1  YAxis          Y Axis                          AbsoluteAxis
                //      0       5         0  Unknown        Collection 0 - Game Pad         Collection, NoData
                //      0       0         1  Unknown        Collection 1                    Collection, NoData
                //      0       0         2  Unknown        Collection 2                    Collection, NoData
                //      0       0         3  Unknown        Collection 3                    Collection, NoData
                //      0     128         4  Unknown        Collection 4 - System Controls  Collection, NoData
                //      4      48         0  XAxis          X Axis                          AbsoluteAxis
                //      8      52         4  RyAxis         Y Rotation                      AbsoluteAxis
                //     12      51         3  RxAxis         X Rotation                      AbsoluteAxis
                //     16      50         2  ZAxis          Z Axis                          AbsoluteAxis
                //     20      53         5  RzAxis         Z Rotation                      AbsoluteAxis
                //     24      57         0  PovController  Hat Switch                      PointOfViewController
                //     32     151        19  Unknown        DC Enable Actuators             NoData, Output
                //     36       1        20  Unknown        Physical Interface Device       NoData, Output
                //     40     112        21  Unknown        Magnitude                       NoData, Output
                //     44      80        22  Unknown        Duration                        NoData, Output
                //     48     167        23  Unknown        Start Delay                     NoData, Output
                //     52     124        24  Unknown        Loop Count                      NoData, Output
                //     56       1         0  Button         Button 0                        PushButton
                //     57       2         1  Button         Button 1                        PushButton
                //     58       3         2  Button         Button 2                        PushButton
                //     59       4         3  Button         Button 3                        PushButton
                //     60       5         4  Button         Button 4                        PushButton
                //     61       6         5  Button         Button 5                        PushButton
                //     62       7         6  Button         Button 6                        PushButton
                //     63       8         7  Button         Button 7                        PushButton
                //     64       9         8  Button         Button 8                        PushButton
                //     65      10         9  Button         Button 9                        PushButton
                //     66     133        10  Button         System Main Menu                PushButton
                //
                // If Sony then...
                if (ud.DevVendorId == 0x054C)
                {
                    ps.ButtonA          = GetButtonValue(list, 1, true, "Cross");
                    ps.ButtonB          = GetButtonValue(list, 2, true, "Circle");
                    ps.ButtonX          = GetButtonValue(list, 0, true, "Square");            // Jump/Kick
                    ps.ButtonY          = GetButtonValue(list, 3, true, "Triangle");
                    ps.LeftShoulder     = GetButtonValue(list, 4, true, "L1");
                    ps.RightShoulder    = GetButtonValue(list, 5, true, "R1");
                    ps.ButtonBack       = GetButtonValue(list, 8, true, "Select", "Back");
                    ps.ButtonStart      = GetButtonValue(list, 9, true, "Start");
                    ps.LeftThumbButton  = GetButtonValue(list, 10, true, "Left Paddle");
                    ps.RightThumbButton = GetButtonValue(list, 11, true, "Right Paddle");
                    // Map triggers from two different axis.
                    ps.LeftTrigger  = GetAxisValue(list, false, false, ObjectGuid.RxAxis, true, "L2");
                    ps.RightTrigger = GetAxisValue(list, false, false, ObjectGuid.RyAxis, true, "R2");
                    // Right Thumb.
                    ps.RightThumbAxisX = GetAxisValue(list, false, false, ObjectGuid.ZAxis, true);
                    // Y is inverted by default.
                    ps.RightThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.RzAxis, true);
                    // Right Thumb.
                    ps.LeftThumbAxisX = GetAxisValue(list, false, false, ObjectGuid.XAxis, true, "Wheel axis");
                    // Y is inverted by default.
                    ps.LeftThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.YAxis, true);
                }
                else
                {
                    ps.ButtonA          = GetButtonValue(list, 0, true, "Cross");
                    ps.ButtonB          = GetButtonValue(list, 1, true, "Circle");
                    ps.ButtonX          = GetButtonValue(list, 2, true, "Square");            // Jump/Kick
                    ps.ButtonY          = GetButtonValue(list, 3, true, "Triangle");
                    ps.LeftShoulder     = GetButtonValue(list, 4, true, "L1");
                    ps.RightShoulder    = GetButtonValue(list, 5, true, "R1");
                    ps.ButtonBack       = GetButtonValue(list, 6, true, "Select", "Back");
                    ps.ButtonStart      = GetButtonValue(list, 7, true, "Start");
                    ps.LeftThumbButton  = GetButtonValue(list, 8, true, "Left Paddle");
                    ps.RightThumbButton = GetButtonValue(list, 9, true, "Right Paddle");
                    // Triggers.
                    var rightTrigger = GetAxisValue(list, false, false, ObjectGuid.RzAxis, true, "R2");
                    // If RzAxis or "R2" name is missing then...
                    if (string.IsNullOrEmpty(rightTrigger))
                    {
                        // Map triggers form single combinex axis.
                        ps.LeftTrigger  = GetAxisValue(list, false, true, ObjectGuid.ZAxis, true, "L2");
                        ps.RightTrigger = GetAxisValue(list, true, true, ObjectGuid.ZAxis, true, "L2");
                    }
                    else
                    {
                        // Map triggers from two different axis.
                        ps.LeftTrigger  = GetAxisValue(list, false, false, ObjectGuid.ZAxis, true, "L2");
                        ps.RightTrigger = GetAxisValue(list, false, false, ObjectGuid.RzAxis, true, "R2");
                    }
                    // Right Thumb.
                    ps.RightThumbAxisX = GetAxisValue(list, false, false, ObjectGuid.RxAxis, true);
                    // Y is inverted by default.
                    ps.RightThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.RyAxis, true);
                    // Right Thumb.
                    ps.LeftThumbAxisX = GetAxisValue(list, false, false, ObjectGuid.XAxis, true, "Wheel axis");
                    // Y is inverted by default.
                    ps.LeftThumbAxisY = GetAxisValue(list, true, false, ObjectGuid.YAxis, true);
                }
                // D-Pad
                var o = list.FirstOrDefault(x => x.Type == ObjectGuid.PovController);
                ps.DPad = o == null ? "" : string.Format("{0}{1}", SettingName.SType.POV, o.Instance + 1);
            }
            ps.PadSettingChecksum = ps.CleanAndGetCheckSum();
            return(ps);
        }