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);
            }
        }
Exemple #2
0
        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);
        }