GetGameMode() public method

Gets the game mode factory registered for the given game mode id.
public GetGameMode ( string p_strGameModeId ) : IGameModeFactory
p_strGameModeId string The id of the game mode for which to retrieve a factory.
return IGameModeFactory
        /// <summary>
        /// Loads the factories for games that have been previously detected as installed.
        /// </summary>
        /// <param name="supportedGameModes">A registry containing the factories for all supported game modes.</param>
        /// <param name="environmentInfo">The application's environment info.</param>
        /// <returns>A registry containing all of the game mode factories for games that were previously detected as installed.</returns>
        public static GameModeRegistry LoadInstalledGameModes(GameModeRegistry supportedGameModes, EnvironmentInfo environmentInfo)
        {
            Trace.TraceInformation("Loading Game Mode Factories for Installed Games...");
            Trace.Indent();

            var installedGameModes = new GameModeRegistry();

            foreach (var gameId in environmentInfo.Settings.InstalledGames)
            {
                Trace.Write($"Loading {gameId}: ");

                if (supportedGameModes.IsRegistered(gameId))
                {
                    Trace.WriteLine("Supported");
                    installedGameModes.RegisterGameMode(supportedGameModes.GetGameMode(gameId));
                }
                else
                {
                    Trace.WriteLine("Not Supported");
                }
            }

            Trace.Unindent();
            return(installedGameModes);
        }
        /// <summary>
        /// Loads the factories for games that have been previously detected as installed.
        /// </summary>
        /// <param name="p_gmrSupportedGameModes">A registry containing the factories for all supported game modes.</param>
        /// <param name="p_eifEnvironmentInfo">The application's envrionment info.</param>
        /// <returns>A registry containing all of the game mode factories for games that were previously detected as installed.</returns>
        public static GameModeRegistry LoadInstalledGameModes(GameModeRegistry p_gmrSupportedGameModes, EnvironmentInfo p_eifEnvironmentInfo)
        {
            Trace.TraceInformation("Loading Game Mode Factories for Installed Games...");
            Trace.Indent();

            GameModeRegistry gmrInstalled = new GameModeRegistry();

            foreach (string strGameId in p_eifEnvironmentInfo.Settings.InstalledGames)
            {
                Trace.Write(String.Format("Loading {0}: ", strGameId));
                if (p_gmrSupportedGameModes.IsRegistered(strGameId))
                {
                    Trace.WriteLine("Supported");
                    gmrInstalled.RegisterGameMode(p_gmrSupportedGameModes.GetGameMode(strGameId));
                }
                else
                {
                    Trace.WriteLine("Not Supported");
                }
            }

            Trace.Unindent();
            return(gmrInstalled);
        }
		/// <summary>
		/// Loads the factories for games that have been previously detected as installed.
		/// </summary>
		/// <param name="p_gmrSupportedGameModes">A registry containing the factories for all supported game modes.</param>
		/// <param name="p_eifEnvironmentInfo">The application's envrionment info.</param>
		/// <returns>A registry containing all of the game mode factories for games that were previously detected as installed.</returns>
		public static GameModeRegistry LoadInstalledGameModes(GameModeRegistry p_gmrSupportedGameModes, EnvironmentInfo p_eifEnvironmentInfo)
		{
			Trace.TraceInformation("Loading Game Mode Factories for Installed Games...");
			Trace.Indent();
			
			GameModeRegistry gmrInstalled = new GameModeRegistry();
			foreach (string strGameId in p_eifEnvironmentInfo.Settings.InstalledGames)
			{
				Trace.Write(String.Format("Loading {0}: ", strGameId));
				if (p_gmrSupportedGameModes.IsRegistered(strGameId))
				{
					Trace.WriteLine("Supported");
					gmrInstalled.RegisterGameMode(p_gmrSupportedGameModes.GetGameMode(strGameId));
				}
				else
					Trace.WriteLine("Not Supported");
			}
			
			Trace.Unindent();
			return gmrInstalled;
		}
		/// <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.Save();
			}
			GameModeRegistry gmrInstalledGameModes = GameModeRegistry.LoadInstalledGameModes(p_gmrSupportedGameModes, m_eifEnvironmentInfo);
			return gmrInstalledGameModes;
		}