public void ModifyShortcutEntry(Identifier identifier, List <KeyCombination> combinationSequence) { var shortcutEntry = m_Entries.FirstOrDefault(e => e.identifier.Equals(identifier)); shortcutEntry.SetOverride(combinationSequence); SerializableShortcutEntry profileEntry = null; foreach (var activeProfileEntry in m_ActiveProfile.entries) { if (activeProfileEntry.identifier.Equals(identifier)) { profileEntry = activeProfileEntry; profileEntry.keyCombination = new List <KeyCombination>(combinationSequence); break; } } if (profileEntry == null) { m_ActiveProfile.Add(shortcutEntry); } if (shortcutsModified != null) { shortcutsModified(this); } }
public void ModifyShortcutEntry(Identifier identifier, IEnumerable <KeyCombination> combinationSequence) { if (activeProfile == null) { throw new InvalidOperationException("No active profile"); } if (!m_BindingValidator.IsCombinationValid(combinationSequence, out string invalidBindingMessage)) { throw new ArgumentException(invalidBindingMessage, nameof(combinationSequence)); } var shortcutEntry = m_Entries.FirstOrDefault(e => e.identifier.Equals(identifier)); var oldBinding = new ShortcutBinding(shortcutEntry.combinations); shortcutEntry.SetOverride(combinationSequence); if (!m_BindingValidator.IsBindingValid(shortcutEntry, out invalidBindingMessage)) { shortcutEntry.ResetToDefault(); Debug.LogError(invalidBindingMessage); shortcutBindingChanged?.Invoke(this, identifier, oldBinding, oldBinding); return; } SerializableShortcutEntry profileEntry = null; foreach (var activeProfileEntry in m_ActiveProfile.entries) { if (activeProfileEntry.identifier.Equals(identifier)) { profileEntry = activeProfileEntry; oldBinding = new ShortcutBinding(profileEntry.combinations); profileEntry.combinations = new List <KeyCombination>(combinationSequence); break; } } if (profileEntry == null) { m_ActiveProfile.Add(shortcutEntry); } SaveShortcutProfile(m_ActiveProfile); var newBinding = new ShortcutBinding(combinationSequence); shortcutBindingChanged?.Invoke(this, identifier, oldBinding, newBinding); }