Exemplo n.º 1
0
        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);
        }