public void ModifyCommandAt(int index, CommandControlMappingElement newCommand) { var newType = GetConfigType(newCommand); var oldType = GetConfigType(GetCommandAt(index)); if (newType != oldType) { RemoveCommandAt(index); AddCommand(newCommand); return; } var i = 0; foreach (var type in bindings.Keys) { if (index - i < bindings[type].GetCommandControlMappings().Count) { bindings[type].ModifyCommandAt(index - i, newCommand); break; } i += bindings[type].GetCommandControlMappings().Count; } }
public void AddCommand(CommandControlMappingElement command) { foreach (var type in bindings.Keys) { try { var config = Convert.ChangeType(command.hardwareConfiguration, type); bindings[type].AddCommand(command); break; } catch (InvalidCastException) { } } }
public string GetConfigType(CommandControlMappingElement config) { foreach (var type in bindings.Keys) { try { var c = Convert.ChangeType(config.hardwareConfiguration, type); return(bindings[type].Name); } catch (InvalidCastException) { } } return(""); }
public abstract void ModifyCommandAt(int index, CommandControlMappingElement newCommand);
public abstract void AddCommand(CommandControlMappingElement command);