/// <summary> /// Gets a registry of installed game modes. /// </summary> /// <param name="supportedGameModes">The games modes supported by the mod manager.</param> /// <returns>A registry of installed game modes.</returns> protected GameModeRegistry GetInstalledGameModes(GameModeRegistry supportedGameModes) { if (!_environmentInfo.Settings.InstalledGamesDetected) { var gdrGameDetector = new GameDiscoverer(); var vmlGameDetection = new GameDetectionVM(_environmentInfo, gdrGameDetector, supportedGameModes); var frmGameDetector = new GameDetectionForm(vmlGameDetection); gdrGameDetector.Find(supportedGameModes.RegisteredGameModeFactories); frmGameDetector.ShowDialog(); if (gdrGameDetector.Status != TaskStatus.Complete) { return(null); } if (gdrGameDetector.DiscoveredGameModes.Count == 0) { return(null); } _environmentInfo.Settings.InstalledGames.Clear(); var j = 0; foreach (var gidGameMode in gdrGameDetector.DiscoveredGameModes) { if (gidGameMode?.GameMode != null) { var gmfGameModeFactory = supportedGameModes.GetGameMode(gidGameMode.GameMode.ModeId); _environmentInfo.Settings.InstallationPaths[gidGameMode.GameMode.ModeId] = gmfGameModeFactory.GetInstallationPath(gidGameMode.GameInstallPath); _environmentInfo.Settings.ExecutablePaths[gidGameMode.GameMode.ModeId] = gmfGameModeFactory.GetExecutablePath(gidGameMode.GameInstallPath); _environmentInfo.Settings.InstalledGames.Add(gidGameMode.GameMode.ModeId); } else { MessageBox.Show($"An error occured during the scan of the game {gdrGameDetector.DiscoveredGameModes[j].GameMode.ModeId} : {Environment.NewLine + "The object GameMode is NULL"}"); } j++; } _environmentInfo.Settings.InstalledGamesDetected = true; _environmentInfo.Settings.CacheOverhaulSetup = false; _environmentInfo.Settings.Save(); } var gmrInstalledGameModes = GameModeRegistry.LoadInstalledGameModes(supportedGameModes, _environmentInfo); return(gmrInstalledGameModes); }
/// <summary> /// Gets a registry of installed game modes. /// </summary> /// <param name="p_gmrSupportedGameModes">The games modes supported by the mod manager.</param> /// <returns>A registry of installed game modes.</returns> protected GameModeRegistry GetInstalledGameModes(GameModeRegistry p_gmrSupportedGameModes) { if (!m_eifEnvironmentInfo.Settings.InstalledGamesDetected) { GameDiscoverer gdrGameDetector = new GameDiscoverer(); GameDetectionVM vmlGameDetection = new GameDetectionVM(m_eifEnvironmentInfo, gdrGameDetector, p_gmrSupportedGameModes); GameDetectionForm frmGameDetector = new GameDetectionForm(vmlGameDetection); gdrGameDetector.Find(p_gmrSupportedGameModes.RegisteredGameModeFactories); frmGameDetector.ShowDialog(); if (gdrGameDetector.Status != TaskStatus.Complete) { return(null); } if (gdrGameDetector.DiscoveredGameModes.Count == 0) { return(null); } m_eifEnvironmentInfo.Settings.InstalledGames.Clear(); Int32 j = 0; foreach (GameDiscoverer.GameInstallData gidGameMode in gdrGameDetector.DiscoveredGameModes) { if ((gidGameMode != null) && (gidGameMode.GameMode != null)) { IGameModeFactory gmfGameModeFactory = p_gmrSupportedGameModes.GetGameMode(gidGameMode.GameMode.ModeId); m_eifEnvironmentInfo.Settings.InstallationPaths[gidGameMode.GameMode.ModeId] = gmfGameModeFactory.GetInstallationPath(gidGameMode.GameInstallPath); m_eifEnvironmentInfo.Settings.ExecutablePaths[gidGameMode.GameMode.ModeId] = gmfGameModeFactory.GetExecutablePath(gidGameMode.GameInstallPath); m_eifEnvironmentInfo.Settings.InstalledGames.Add(gidGameMode.GameMode.ModeId); } else { MessageBox.Show(string.Format("An error occured during the scan of the game {0} : {1}", gdrGameDetector.DiscoveredGameModes[j].GameMode.ModeId, Environment.NewLine + "The object GameMode is NULL")); } j++; } m_eifEnvironmentInfo.Settings.InstalledGamesDetected = true; m_eifEnvironmentInfo.Settings.CacheOverhaulSetup = false; m_eifEnvironmentInfo.Settings.Save(); } GameModeRegistry gmrInstalledGameModes = GameModeRegistry.LoadInstalledGameModes(p_gmrSupportedGameModes, m_eifEnvironmentInfo); return(gmrInstalledGameModes); }