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); }
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); }
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); }
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); }
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); }
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(); }); }