public void SaveKeybinding(BiInputKeySet biInputKeySet) { if (biInputKeySet.CharacterId == 0) { accountKeybindings.Update(biInputKeySet); } else { characterKeybindings.Update(biInputKeySet); } }
/// <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); } } }
public static void HandleKeybindingUpdate(WorldSession session, BiInputKeySet biInputKeySet) { session.Player.KeybindingManager.SaveKeybinding(biInputKeySet); }