Beispiel #1
0
 public ViewModel(string Patch)
 {
     if (Folder_game == "")
     {
         throw new Exception("Не задан путь к папке с игрой!");
     }
     if (Dialogs != null)
     {
         Dialogs.Clear();
     }
     else
     {
         Dialogs = new ObservableCollection <GameDialog>();
     }
     if (Strings != null)
     {
         Strings.Clear();
     }
     else
     {
         Strings = new ObservableCollection <GameText>();
     }
     if (Infoportions != null)
     {
         Infoportions.Clear();
     }
     else
     {
         Infoportions = new ObservableCollection <Infoportion>();
     }
     Load(Patch);
 }
Beispiel #2
0
        /// <summary>
        /// Чтение и загрузка ресурсов игры
        /// </summary>
        /// <param name="Folder_game">Путь к папке с игрой</param>
        public void Load(string Folder_game)
        {
            this.Folder_game = Folder_game;
            // Считываем файл локализации
            ArrayList arrSTFiles = GetStringTableFiles();

            // Проверить каждый файл на существование
            foreach (string patch in arrSTFiles)
            {
                if (File.Exists(Folder_game + TEXT_RUS + patch))
                {
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(Folder_game + TEXT_RUS + patch);
                    XmlNode     xStringTable = xDoc.DocumentElement;
                    XmlNodeList xStringList  = xStringTable.SelectNodes("string");
                    foreach (XmlNode xString in xStringList)
                    {
                        Strings.Add(new GameText(xString, Folder_game + TEXT_RUS + patch));
                    }
                }
                else
                {
                    // Вывод в консоль
                }
            }
            // Считываем файлы поршней
            if (Directory.Exists(Folder_game + GAMEDATA))
            {
                // Получили список файлов с поршнями
                ArrayList arrInfoFiles = GetInfoportionsFiles();
                // Проверить каждый файл на существование
                foreach (string patch in arrInfoFiles)
                {
                    if (File.Exists(Folder_game + GAMEPLAY + patch))
                    {
                        // Открыть файл
                        XmlDocument xDoc = new XmlDocument();
                        try
                        {
                            xDoc.Load(Folder_game + GAMEPLAY + patch);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"Ошибка {ex.Message} в файле: {patch}");
                            continue;
                        }
                        finally
                        {
                            XmlNode xRoot = xDoc.DocumentElement;
                            if (xRoot != null)
                            {
                                // Ищем XML диалога
                                XmlNodeList xInfos = xRoot.SelectNodes("info_portion");
                                // Передаём в конструктор диалога строку с XML
                                foreach (XmlNode n in xInfos)
                                {
                                    Infoportion Inf = new Infoportion(n, Folder_game + GAMEPLAY + patch);
                                    //string dlgid = n.Attributes.GetNamedItem("id").Value;
                                    Infoportions.Add(Inf);
                                }
                            }
                        }
                    }
                    else
                    {
                        //Вывод в лог
                    }
                }
                // Получили список файлов с диалогами
                ArrayList arrDialogFiles = GetDialogFiles();
                // Проверить каждый файл на существование
                foreach (string patch in arrDialogFiles)
                {
                    if (File.Exists(Folder_game + GAMEPLAY + patch))
                    {
                        // Открыть файл
                        XmlDocument xDoc = new XmlDocument();
                        xDoc.Load(Folder_game + GAMEPLAY + patch);
                        XmlNode xRoot = xDoc.DocumentElement;
                        // Ищем XML диалога
                        XmlNodeList xDialogs = xRoot.SelectNodes("dialog");
                        // Передаём в конструктор диалога строку с XML
                        foreach (XmlNode n in xDialogs)
                        {
                            GameDialog Dlg = new GameDialog(n, Folder_game + GAMEPLAY + patch);
                            //string dlgid = n.Attributes.GetNamedItem("id").Value;
                            Dialogs.Add(Dlg);
                        }
                    }
                    else
                    {
                        //Вывод в лог
                    }
                }
            }
            else
            {
                throw new Exception("В папке с игрой не найдена папка 'gamedata' \n распакуйте *.db архивы и перезапустите программу.");
                //MessageBox.Show(
                //    "В папке с игрой не найдена папка 'gamedata' \n распакуйте *.db архивы и перезапустите программу.",
                //    "Ошибка",
                //    MessageBoxButton.OK,
                //    MessageBoxImage.Information,
                //    MessageBoxResult.OK,
                //    MessageBoxOptions.DefaultDesktopOnly);
            }
        }