public HotkeyManager(IReadOnlyFileSystem fileSystem, Dictionary <string, Hotkey> settings, Manifest manifest) { this.settings = settings; var keyDefinitions = MiniYaml.Load(fileSystem, manifest.Hotkeys, null); foreach (var kd in keyDefinitions) { var definition = new HotkeyDefinition(kd.Key, kd.Value); definitions[kd.Key] = definition; keys[kd.Key] = definition.Default; } foreach (var kv in settings) { if (definitions.ContainsKey(kv.Key)) { keys[kv.Key] = kv.Value; } } foreach (var hd in definitions) { hd.Value.HasDuplicates = GetFirstDuplicate(hd.Value.Name, this[hd.Value.Name].GetValue(), hd.Value) != null; } }
public HotkeyDefinition GetFirstDuplicate(string name, Hotkey value, HotkeyDefinition definition) { foreach (var kv in keys) { if (kv.Key == name) { continue; } if (kv.Value == value && definitions[kv.Key].Types.Overlaps(definition.Types)) { return(definitions[kv.Key]); } } return(null); }
public HotkeyManager(IReadOnlyFileSystem fileSystem, Dictionary <string, Hotkey> settings, Manifest manifest) { this.settings = settings; var keyDefinitions = MiniYaml.Load(fileSystem, manifest.Hotkeys, null); foreach (var kd in keyDefinitions) { var definition = new HotkeyDefinition(kd.Key, kd.Value); definitions[kd.Key] = definition; keys[kd.Key] = definition.Default; } foreach (var kv in settings) { keys[kv.Key] = kv.Value; } }
public HotkeyDefinition GetFirstDuplicate(HotkeyDefinition definition, Hotkey value) { if (definition == null) { return(null); } foreach (var kv in keys) { if (kv.Key == definition.Name) { continue; } if (kv.Value == value && definitions[kv.Key].Contexts.Overlaps(definition.Contexts)) { return(definitions[kv.Key]); } } return(null); }