public MainFormVM(IEnvironmentInfo p_eifEnvironmentInfo, GameModeRegistry p_gmrInstalledGames, IGameMode p_gmdGameMode, IModRepository p_mrpModRepository, DownloadMonitor p_dmtMonitor, ActivateModsMonitor p_ammMonitor, UpdateManager p_umgUpdateManager, ModManager p_mmgModManager, IPluginManager p_pmgPluginManager)
{
EnvironmentInfo = p_eifEnvironmentInfo;
GameMode = p_gmdGameMode;
GameMode.GameLauncher.GameLaunching += new CancelEventHandler(GameLauncher_GameLaunching);
ModManager = p_mmgModManager;
ModRepository = p_mrpModRepository;
UpdateManager = p_umgUpdateManager;
ModManagerVM = new ModManagerVM(p_mmgModManager, p_eifEnvironmentInfo.Settings, p_gmdGameMode.ModeTheme);
DownloadMonitorVM = new DownloadMonitorVM(p_dmtMonitor, p_eifEnvironmentInfo.Settings, p_mmgModManager, p_mrpModRepository);
ModActivationMonitor = p_ammMonitor;
ActivateModsMonitorVM = new ActivateModsMonitorVM(p_ammMonitor, p_eifEnvironmentInfo.Settings, p_mmgModManager);
if (GameMode.UsesPlugins)
PluginManagerVM = new PluginManagerVM(p_pmgPluginManager, p_eifEnvironmentInfo.Settings, p_gmdGameMode, p_ammMonitor);
HelpInfo = new HelpInformation(p_eifEnvironmentInfo);
GeneralSettingsGroup gsgGeneralSettings = new GeneralSettingsGroup(p_eifEnvironmentInfo);
foreach (IModFormat mftFormat in p_mmgModManager.ModFormats)
gsgGeneralSettings.AddFileAssociation(mftFormat.Extension, mftFormat.Name);
ModOptionsSettingsGroup mosModOptions = new ModOptionsSettingsGroup(p_eifEnvironmentInfo);
List<ISettingsGroupView> lstSettingGroups = new List<ISettingsGroupView>();
lstSettingGroups.Add(new GeneralSettingsPage(gsgGeneralSettings));
lstSettingGroups.Add(new ModOptionsPage(mosModOptions));
DownloadSettingsGroup dsgDownloadSettings = new DownloadSettingsGroup(p_eifEnvironmentInfo, ModRepository);
lstSettingGroups.Add(new DownloadSettingsPage(dsgDownloadSettings));
if (p_gmdGameMode.SettingsGroupViews != null)
lstSettingGroups.AddRange(p_gmdGameMode.SettingsGroupViews);
SettingsFormVM = new SettingsFormVM(p_gmdGameMode, p_eifEnvironmentInfo, lstSettingGroups);
UpdateCommand = new Command("Update", String.Format("Update {0}", EnvironmentInfo.Settings.ModManagerName), UpdateProgramme);
LogoutCommand = new Command("Logout", "Logout", Logout);
List<Command> lstChangeGameModeCommands = new List<Command>();
List<IGameModeDescriptor> lstSortedModes = new List<IGameModeDescriptor>(p_gmrInstalledGames.RegisteredGameModes);
lstSortedModes.Sort((x, y) => x.Name.CompareTo(y.Name));
foreach (IGameModeDescriptor gmdInstalledGame in lstSortedModes)
{
string strId = gmdInstalledGame.ModeId;
string strName = gmdInstalledGame.Name;
string strDescription = String.Format("Change game to {0}", gmdInstalledGame.Name);
Image imgCommandIcon = new Icon(gmdInstalledGame.ModeTheme.Icon, 32, 32).ToBitmap();
lstChangeGameModeCommands.Add(new Command(strId, strName, strDescription, imgCommandIcon, () => ChangeGameMode(strId), true));
}
lstChangeGameModeCommands.Add(new Command("Change Default Game...", "Change Default Game", () => ChangeGameMode(CHANGE_DEFAULT_GAME_MODE)));
lstChangeGameModeCommands.Add(new Command("Rescan Installed Games...", "Rescan Installed Games", () => ChangeGameMode(RESCAN_INSTALLED_GAMES)));
ChangeGameModeCommands = lstChangeGameModeCommands;
}