public void SaveKeybinding(BiInputKeySet biInputKeySet)
 {
     if (biInputKeySet.CharacterId == 0)
     {
         accountKeybindings.Update(biInputKeySet);
     }
     else
     {
         characterKeybindings.Update(biInputKeySet);
     }
 }
Example #2
0
        /// <summary>
        /// Update <see cref="KeybindingSet"/> with information from supplied <see cref="BiInputKeySet"/> from client.
        /// </summary>
        public void Update(BiInputKeySet biInputKeySet)
        {
            if (bindings.Count + biInputKeySet.Bindings.Count == 0)
            {
                return;
            }

            isDirty = true;

            foreach (ushort inputActionId in bindings.Keys
                     .Except(biInputKeySet.Bindings.Select(b => b.InputActionId)))
            {
                Keybinding binding = bindings[inputActionId];
                if (binding.PendingCreate)
                {
                    bindings.Remove(inputActionId);
                }
                else
                {
                    binding.EnqueueDelete(true);
                }
            }

            foreach (NetworkBinding networkBinding in biInputKeySet.Bindings)
            {
                if (!bindings.TryGetValue(networkBinding.InputActionId, out Keybinding binding))
                {
                    bindings.Add(networkBinding.InputActionId, new Keybinding(Owner, networkBinding));
                }
                else
                {
                    if (binding.PendingDelete)
                    {
                        binding.EnqueueDelete(false);
                    }

                    binding.Update(networkBinding);
                }
            }
        }
Example #3
0
 public static void HandleKeybindingUpdate(WorldSession session, BiInputKeySet biInputKeySet)
 {
     session.Player.KeybindingManager.SaveKeybinding(biInputKeySet);
 }