/// <summary> /// Главный конструктор класса GameManager. /// </summary> /// <param name="App">Экземпляр класса с параметрами приложения</param> public GameManager(CurrentApp App) { // Создаём объекты для хранения базы игр... SourceGames = new List <SourceGame>(); InstalledGames = new List <String>(); // При использовании нового метода поиска установленных игр, считаем их из конфига Steam... List <String> GameDirs = App.SteamClient.FormatInstallDirs(App.Platform.SteamAppsFolderName); // Создаём поток с XML-файлом... using (FileStream XMLFS = new FileStream(Path.Combine(App.FullAppPath, Properties.Resources.GameListFile), FileMode.Open, FileAccess.Read)) { // Создаём объект документа XML... XmlDocument XMLD = new XmlDocument(); // Загружаем поток в объект XML документа... XMLD.Load(XMLFS); // Обходим полученный список в цикле... XmlNodeList XMLNode = XMLD.GetElementsByTagName("Game"); for (int i = 0; i < XMLNode.Count; i++) { try { if (XMLD.GetElementsByTagName("Enabled")[i].InnerText == "1" || !Properties.Settings.Default.HideUnsupportedGames) { SourceGame SG = new SourceGame(XMLNode[i].Attributes["Name"].Value, XMLD.GetElementsByTagName("DirName")[i].InnerText, XMLD.GetElementsByTagName("SmallName")[i].InnerText, XMLD.GetElementsByTagName("Executable")[i].InnerText, XMLD.GetElementsByTagName("SID")[i].InnerText, XMLD.GetElementsByTagName("SVer")[i].InnerText, XMLD.GetElementsByTagName("VFDir")[i].InnerText, App.Platform.OS == CurrentPlatform.OSType.Windows ? XMLD.GetElementsByTagName("HasVF")[i].InnerText == "1" : true, XMLD.GetElementsByTagName("UserDir")[i].InnerText == "1", XMLD.GetElementsByTagName("HUDsAvail")[i].InnerText == "1", App.FullAppPath, App.AppUserDir, App.SteamClient.FullSteamPath, App.Platform.SteamAppsFolderName, App.SteamClient.SteamID, GameDirs); if (SG.IsInstalled) { SourceGames.Add(SG); InstalledGames.Add(SG.FullAppName); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } } } }
private void frmMainW_Load(object sender, EventArgs e) { // Событие инициализации формы... App = new CurrentApp(); SourceGames = new List<SourceGame>(); // Узнаем путь к установленному клиенту Steam... try { App.FullSteamPath = SteamManager.GetSteamPath(); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); ValidateAndHandle(); } // Начинаем платформо-зависимые процедуры... ChangePrvControlState(ProcessManager.IsCurrentUserAdmin()); // Сохраним последний путь к Steam в файл конфигурации... Properties.Settings.Default.LastSteamPath = App.FullSteamPath; // Вставляем информацию о версии в заголовок формы... Text = String.Format(Text, Properties.Resources.AppName, Properties.Resources.PlatformFriendlyName, CurrentApp.AppVersion); // Укажем статус Безопасной очистки... CheckSafeClnStatus(); // Укажем путь к Steam на странице "Устранение проблем"... PS_StPath.Text = String.Format(PS_StPath.Text, App.FullSteamPath); // Проверим на наличие запрещённых символов в пути к установленному клиенту Steam... CheckSymbolsSteam(App.FullSteamPath); // Запустим поиск установленных игр и проверим нашлось ли что-то... FindGames(App.FullSteamPath, AppStrings.AppXMLParseError); try { // Проверим наличие обновлений программы (если разрешено в настройках)... if (Properties.Settings.Default.EnableAutoUpdate) { if (!BW_UpChk.IsBusy) { BW_UpChk.RunWorkerAsync(); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }