/// <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> /// A simple constructor that initializes the object with the given dependencies. /// </summary> /// <param name="p_gmdGameModeInfo">The descriptor for the game modewhose install path is to be found.</param> /// <param name="p_gdtDetector">The discoverer to use to find the game installation path.</param> public GameModeSearchListViewItem(IGameModeDescriptor p_gmdGameModeInfo, GameDiscoverer p_gdtDetector) : base(p_gmdGameModeInfo) { Discoverer = p_gdtDetector; InitializeComponent(); AutoSize = true; AutoSizeMode = AutoSizeMode.GrowAndShrink; SetVisiblePanel(pnlSearching); p_gdtDetector.PropertyChanged += new PropertyChangedEventHandler(Detector_PropertyChanged); p_gdtDetector.PathFound += new EventHandler <GameModeDiscoveredEventArgs>(Detector_PathFound); p_gdtDetector.TaskEnded += new EventHandler <TaskEndedEventArgs>(Detector_TaskEnded); lblGameModeName.Text = GameMode.Name; lblGameModeName.ForeColor = GameMode.ModeTheme.PrimaryColour; pbxGameLogo.Image = new Icon(GameMode.ModeTheme.Icon, 96, 96).ToBitmap(); }
/// <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); }
/// <summary> /// A simple constructor that initializes the object with the given dependencies. /// </summary> /// <param name="p_eifEnvironmentInfo">The application's envrionment info.</param> /// <param name="p_gdvGameDetector">The discoverer to use to find the game installation path.</param> /// <param name="p_gmrSupportedGameModes">The list of supported game modes.</param> public GameDetectionVM(IEnvironmentInfo p_eifEnvironmentInfo, GameDiscoverer p_gdvGameDetector, GameModeRegistry p_gmrSupportedGameModes) { EnvironmentInfo = p_eifEnvironmentInfo; GameDetector = p_gdvGameDetector; SupportedGameModes = p_gmrSupportedGameModes; }