예제 #1
0
 /// <summary>
 /// Конструктор класса формы модуля создания отчётов для техподдержки.
 /// </summary>
 /// <param name="A">Путь к каталогу пользователя</param>
 /// <param name="FS">Путь к каталогу установки Steam</param>
 /// <param name="SG">Конфигурация выбранной в главном окне игры</param>
 public FrmRepBuilder(string A, string FS, SourceGame SG)
 {
     InitializeComponent();
     AppUserDir    = A;
     FullSteamPath = FS;
     SelectedGame  = SG;
 }
예제 #2
0
        /// <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); }
                }
            }
        }
예제 #3
0
 /// <summary>
 /// Вызывает форму модуля создания отчётов для Техподдержки.
 /// </summary>
 /// <param name="AppUserDir">Путь к каталогу пользователя программы</param>
 /// <param name="FullSteamPath">Путь к каталогу установки Steam</param>
 /// <param name="FullCfgPath">Путь к каталогу с конфигами выбранной игры</param>
 /// <param name="SelectedGame">Конфигурация выбранной в главном окне игры</param>
 public static void FormShowRepBuilder(string AppUserDir, string FullSteamPath, SourceGame SelectedGame)
 {
     using (FrmRepBuilder RBF = new FrmRepBuilder(AppUserDir, FullSteamPath, SelectedGame))
     {
         RBF.ShowDialog();
     }
 }
예제 #4
0
 /// <summary>
 /// Выбирает определённую игру по имени.
 /// </summary>
 /// <param name="GameName">Имя игры</param>
 public void Select(string GameName)
 {
     SelectedGame = SourceGames.Find(Item => String.Equals(Item.FullAppName, GameName, StringComparison.CurrentCultureIgnoreCase));
 }
예제 #5
0
        private void AppSelector_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                // Получаем нужные значения...
                SelGame = SourceGames.Find(Item => String.Equals(Item.FullAppName, AppSelector.Text, StringComparison.CurrentCultureIgnoreCase));

                // Переключаем состояние некоторых контролов...
                HandleControlsOnSelGame();

                // Проверим наличие запрещённых символов в пути...
                CheckSymbolsGame(SelGame.FullGamePath);

                // Распознаем файловую систему на диске с игрой...
                DetectFS(SelGame.FullGamePath);

                // Считаем настройки графики...
                if (SelGame.IsUsingVideoFile) { string VideoFile = SelGame.GetActualVideoFile(); if (File.Exists(VideoFile)) { ReadNCFGameSettings(VideoFile, SelGame.SourceType); } else { CoreLib.WriteStringToLog(String.Format(AppStrings.AppVideoDbNotFound, SelGame.FullAppName, VideoFile)); NullGraphOptions(); } } else { ReadGCFGameSettings(SelGame.SmallAppName); }

                // Переключаем графический твикер в режим GCF/NCF...
                SetGTOptsType(!SelGame.IsUsingVideoFile);

                // Получим параметры запуска...
                GT_LaunchOptions.Text = SelGame.LaunchOptions;

                // Получаем текущий SteamID...
                HandleSteamIDs(Properties.Settings.Default.LastSteamID);

                // Проверим, установлен ли FPS-конфиг...
                HandleConfigs(SelGame.FullGamePath, SelGame.IsUsingUserDir);

                // Закроем открытые конфиги в редакторе...
                if (!(String.IsNullOrEmpty(CFGFileName))) { CloseEditorConfigs(); }

                // Считаем имеющиеся FPS-конфиги...
                if (!BW_FPRecv.IsBusy) { BW_FPRecv.RunWorkerAsync(); }

                // Обновляем статус...
                UpdateStatusBar(MainTabControl.SelectedIndex);

                // Сохраним ID последней выбранной игры...
                Properties.Settings.Default.LastGameName = AppSelector.Text;

                // Переключаем вид страницы менеджера HUD...
                HandleHUDMode(SelGame.IsHUDsAvailable);

                // Считаем список доступных HUD для данной игры...
                if (SelGame.IsHUDsAvailable) { if (!BW_HUDList.IsBusy) { BW_HUDList.RunWorkerAsync(); } }

                // Считаем список бэкапов...
                if (!BW_BkUpRecv.IsBusy) { BW_BkUpRecv.RunWorkerAsync(); }

                // Создадим каталоги...
                if (!Directory.Exists(SelGame.AppHUDDir)) { Directory.CreateDirectory(SelGame.AppHUDDir); }
            }
            catch (Exception Ex)
            {
                CoreLib.HandleExceptionEx(AppStrings.AppFailedToGetData, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
            }
        }
예제 #6
0
        /// <summary>
        /// Определяет установленные игры и заполняет комбо-бокс выбора
        /// доступных управляемых игр.
        /// </summary>
        /// <param name="SteamPath">Путь к клиенту Steam</param>
        private void DetectInstalledGames(string SteamPath)
        {
            // Очистим список игр...
            AppSelector.Items.Clear();
            SourceGames.Clear();

            // При использовании нового метода поиска установленных игр, считаем их из конфига Steam...
            List<String> GameDirs = SteamManager.FormatInstallDirs(App.FullSteamPath);

            // Формируем список для поддерживаемых игр...
            List<String> AvailableGames = new List<String>();

            try
            {
                // Создаём поток с 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++)
                    {
                        AvailableGames.Add(XMLD.GetElementsByTagName("DirName")[i].InnerText);
                        try
                        {
                            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, XMLD.GetElementsByTagName("HasVF")[i].InnerText == "1", XMLD.GetElementsByTagName("UserDir")[i].InnerText == "1", XMLD.GetElementsByTagName("HUDsAvail")[i].InnerText == "1", App.FullAppPath, App.AppUserDir, App.FullSteamPath, GameDirs);
                            if (SG.IsInstalled)
                            {
                                SourceGames.Add(SG);
                                AppSelector.Items.Add(XMLNode[i].Attributes["Name"].Value);
                            }
                        }
                        catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    }
                }
            }
            catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
        }