public static void ProcessExecutable(string filePath)
        {
            var fi = new FileInfo(filePath);

            if (!fi.Exists)
            {
                return;
            }
            // Check if item already exists.
            var game = Games.Items.FirstOrDefault(x => x.FileName.ToLower() == fi.Name.ToLower());

            if (game == null)
            {
                var scanner = new XInputMaskScanner();
                game = scanner.FromDisk(fi.FullName);
                // Load default settings.
                var program = Programs.Items.FirstOrDefault(x => x.FileName.ToLower() == game.FileName.ToLower());
                game.LoadDefault(program);
                Games.Items.Add(game);
            }
            else
            {
                game.FullPath = fi.FullName;
            }
            Save();
        }
        void ScanGames(object state)
        {
            var exe = state as string;

            Invoke((Action) delegate()
            {
                ScanProgressLevel0Label.Text = "...";
                ScanProgressLevel1Label.Text = "";
                ScanProgressPanel.Visible    = true;
                ScanGamesButton.Enabled      = false;
            });
            GameScanner           = new XInputMaskScanner();
            GameScanner.Progress += Scanner_Progress;
            string[] paths;
            string   name = null;

            if (string.IsNullOrEmpty(exe))
            {
                paths = SettingsManager.Options.GameScanLocations.ToArray();
            }
            else
            {
                // Set properties to scan single file.
                paths = new string[] { System.IO.Path.GetDirectoryName(exe) };
                name  = System.IO.Path.GetFileName(exe);
            }
            var games    = SettingsManager.UserGames.Items;
            var programs = SettingsManager.Programs.Items;

            GameScanner.ScanGames(paths, games, programs, name);
        }
Exemple #3
0
        void ScanGames(object state)
        {
            var exe = state as string;

            Invoke((MethodInvoker) delegate()
            {
                ScanProgressPanel.Visible = true;
                ScanGamesButton.Enabled   = false;
            });
            GameScanner           = new XInputMaskScanner();
            GameScanner.Progress += Scanner_Progress;
            string[] paths;
            string   name = null;

            if (string.IsNullOrEmpty(exe))
            {
                paths = MainForm.Current.OptionsPanel.GameScanLocationsListBox.Items.Cast <string>().ToArray();
            }
            else
            {
                // Set properties to scan single file.
                paths = new string[] { System.IO.Path.GetDirectoryName(exe) };
                name  = System.IO.Path.GetFileName(exe);
            }
            var games    = SettingsManager.UserGames.Items;
            var programs = SettingsManager.Programs.Items;

            GameScanner.ScanGames(paths, games, programs, name);
        }
Exemple #4
0
        static IList <Engine.Data.UserGame> Games_ValidateData(IList <Engine.Data.UserGame> items)
        {
            // Make sure default settings have unique by file name.
            var distinctItems = items
                                .GroupBy(p => p.FileName.ToLower())
                                .Select(g => g.First())
                                .ToList();

            // Check if current application doesn't exist in the list then...
            var appFile = new FileInfo(Application.ExecutablePath);
            var appItem = distinctItems.FirstOrDefault(x => string.Compare(x.FileName, appFile.Name, true) == 0);

            if (appItem == null)
            {
                // Add x360ce.exe
                var scanner = new XInputMaskScanner();
                var item    = scanner.FromDisk(appFile.FullName);
                var program = Programs.Items.FirstOrDefault(x => string.Compare(x.FileName, appFile.Name, true) == 0);
                item.LoadDefault(program);
                // Append to top.
                distinctItems.Insert(0, item);
            }
            else
            {
                appItem.FullPath = appFile.FullName;
                // Make sure it is on top.
                if (distinctItems.IndexOf(appItem) > 0)
                {
                    distinctItems.Remove(appItem);
                    distinctItems.Insert(0, appItem);
                }
            }
            return(distinctItems);
        }
Exemple #5
0
        void ScanGames(object state)
        {
            Invoke((MethodInvoker) delegate()
            {
                ScanProgressPanel.Visible = true;
                ScanGamesButton.Enabled   = false;
            });
            GameScanner           = new XInputMaskScanner();
            GameScanner.Progress += Scanner_Progress;
            var paths    = MainForm.Current.OptionsPanel.GameScanLocationsListBox.Items.Cast <string>().ToArray();
            var games    = SettingsManager.UserGames.Items;
            var programs = SettingsManager.Programs.Items;

            GameScanner.ScanGames(paths, games, programs);
        }
Exemple #6
0
        static IList <Engine.Data.UserGame> Games_ValidateData(IList <Engine.Data.UserGame> items)
        {
            // Make sure default settings have unique by file name.
            var distinctItems = items
                                .GroupBy(p => p.FileName.ToLower())
                                .Select(g => g.First())
                                .ToList();

            // Check if current application doesn't exist in the list then...
            var appFile = new FileInfo(Application.ExecutablePath);
            var appItem = distinctItems.FirstOrDefault(x => string.Compare(x.FileName, appFile.Name, true) == 0);

            if (appItem == null)
            {
                // Add x360ce.exe
                var scanner = new XInputMaskScanner();
                var item    = scanner.FromDisk(appFile.FullName);
                var program = Programs.Items.FirstOrDefault(x => string.Compare(x.FileName, appFile.Name, true) == 0);
                item.LoadDefault(program);
                // Append to top.
                distinctItems.Insert(0, item);
            }
            else
            {
                appItem.FullPath = appFile.FullName;
                // Make sure it is on top.
                if (distinctItems.IndexOf(appItem) > 0)
                {
                    distinctItems.Remove(appItem);
                    distinctItems.Insert(0, appItem);
                }
            }
            for (int i = 0; i < distinctItems.Count; i++)
            {
                var item = distinctItems[i];
                // If emulation is enabled but type is not set, then set to virtual (one which can be done by this app).
                if (item.EnableMask > 0 && item.EmulationType == (int)EmulationType.None)
                {
                    item.EmulationType = (int)EmulationType.Virtual;
                }
            }
            return(distinctItems);
        }
Exemple #7
0
        void ScanGames(object state)
        {
            string[] paths = null;
            Invoke((MethodInvoker) delegate()
            {
                ScanProgressLabel.Visible = true;
                ScanGamesButton.Enabled   = false;
                paths = MainForm.Current.OptionsPanel.GameScanLocationsListBox.Items.Cast <string>().ToArray();
                ScanProgressLabel.Text = "Scanning...";
            });
            var skipped = 0;
            var added   = 0;
            var updated = 0;

            for (int i = 0; i < paths.Length; i++)
            {
                var path = (string)paths[i];
                // Don't allow to scan windows folder.
                var winFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.Windows);
                if (path.StartsWith(winFolder))
                {
                    continue;
                }
                var di = new System.IO.DirectoryInfo(path);
                // Skip folders if don't exists.
                if (!di.Exists)
                {
                    continue;
                }
                var exes = new List <FileInfo>();
                AppHelper.GetFiles(di, ref exes, "*.exe", true);
                for (int f = 0; f < exes.Count; f++)
                {
                    var exe     = exes[f];
                    var exeName = exe.Name.ToLower();
                    var program = SettingManager.Programs.Items.FirstOrDefault(x => x.FileName.ToLower() == exeName);
                    // If file doesn't exist in the game list then continue.
                    if (program == null)
                    {
                        skipped++;
                    }
                    else
                    {
                        // Get game by executable name.
                        var game = SettingManager.Games.Items.FirstOrDefault(x => x.FileName.ToLower() == exeName);
                        // If file doesn't exist in the game list then continue.
                        if (game == null)
                        {
                            Invoke((MethodInvoker) delegate()
                            {
                                var scanner = new XInputMaskScanner();
                                game        = scanner.FromDisk(exe.FullName);
                                game.LoadDefault(program);
                                SettingManager.Games.Items.Add(game);
                                added++;
                            });
                        }
                        else
                        {
                            game.FullPath = exe.FullName;
                            if (string.IsNullOrEmpty(game.FileProductName) && !string.IsNullOrEmpty(program.FileProductName))
                            {
                                game.FileProductName = program.FileProductName;
                            }
                            updated++;
                        }
                    }
                    Invoke((MethodInvoker) delegate()
                    {
                        ScanProgressLabel.Text = string.Format("Scanning Path ({0}/{1}): {2}\r\nSkipped = {3}, Added = {4}, Updated = {5}", i + 1, paths.Length, path, skipped, added, updated);
                    });
                }
                SettingManager.Save();
            }
            Invoke((MethodInvoker) delegate()
            {
                ScanGamesButton.Enabled   = true;
                ScanProgressLabel.Visible = false;
                ShowHideAndSelectGridRows();
            });
        }