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