private static InputConfig[] LoadControllerConfiguration(string[] args) { Controllers = new List <Controller>(); for (int i = 0; i < args.Length; i++) { if (args[i].StartsWith("-p") && args[i].Length > 3) { int playerId; int.TryParse(args[i].Substring(2, 1), out playerId); Controller player = Controllers.FirstOrDefault(c => c.PlayerIndex == playerId); if (player == null) { player = new Controller() { PlayerIndex = playerId }; Controllers.Add(player); } if (args.Length < i + 1) { break; } string var = args[i].Substring(3); string val = args[i + 1]; if (val.StartsWith("-")) { continue; } switch (var) { case "guid": player.Guid = val.ToUpper(); break; case "name": player.Name = val; break; case "nbbuttons": player.NbButtons = val.ToInteger(); break; case "nbhats": player.NbHats = val.ToInteger(); break; case "nbaxes": player.NbAxes = val.ToInteger(); break; } } } try { var inputConfig = InputList.Load(Path.Combine(Program.AppConfig.GetFullPath("home"), "es_input.cfg")); if (inputConfig != null) { if (!Controllers.Any()) { var pi = new Controller() { PlayerIndex = 1 }; pi.Config = inputConfig.FirstOrDefault(c => c.DeviceName == "Keyboard"); if (pi.Config != null) { pi.Name = "Keyboard"; pi.Guid = pi.Config.ProductGuid.ToString(); Controllers.Add(pi); } } else { foreach (var pi in Controllers) { pi.Config = inputConfig.FirstOrDefault(c => c.DeviceGUID.ToUpper() == pi.Guid && c.DeviceName == pi.Name); if (pi.Config == null) { pi.Config = inputConfig.FirstOrDefault(c => c.DeviceGUID.ToUpper() == pi.Guid); } if (pi.Config == null) { pi.Config = inputConfig.FirstOrDefault(c => c.DeviceName == pi.Name); } if (pi.Config == null) { pi.Config = inputConfig.FirstOrDefault(c => c.DeviceName == "Keyboard"); } } } Controllers.RemoveAll(c => c.Config == null); } return(inputConfig); } catch { } return(null); }