/// <summary> /// Сохранение текущего изображения /// </summary> /// <param name="sender">Отправитель</param> /// <param name="e">Параметры события</param> private void OnSaveClick(object sender, RoutedEventArgs e) { if (IsGameImageLoaded) //Сохраняем только если картинка загружена { ResourceItemViewModel item = (ResourceItemViewModel)ItemsComboBox.SelectedValue; if (item.RID == 0) //Если ID = 0, считаем, то у нас есть путь ресурса, откуда берем имя файла { sFileDialog.FileName = Path.GetFileName(item.RPath); } else { sFileDialog.FileName = item.RID.ToString() + ".tga"; //Иначе сохраняем именем ID } var result = sFileDialog.ShowDialog(); if (result == true) { try { File.WriteAllBytes(sFileDialog.FileName, CurrentImageBytes); } catch (Exception ex) { DialogManager.ShowErrorDialog(LanguageManager.Model.PersonalizationCantSave + " " + ex.Message); } } } }
/// <summary> /// Загрузка и парсинг файла с ресурсами. Синтакс: /// 1) DESCRIPTION;PATH /// 2) DESCRIPTION;ID /// </summary> private void LoadResourceList() { ResourceModel.UnLoadData(); string[] rlines = null; string rFile = (EnvironmentManager.ResourcesPath + string.Format(RES_LIST_FILE, ConfigurationManager.GetConfiguration(ProfileManager.CurrentProfile.GameModel).GameType)); if (File.Exists(rFile)) { rlines = System.IO.File.ReadAllLines(rFile); for (int i = 0; i < rlines.Length; i++) { if (rlines[i].Length == 0) { continue; } rlines[i] = rlines[i].Trim(); if (rlines[i][0] == '#') { continue; } string[] vars = rlines[i].Split(';'); if (vars.Length > 1) { ResourceItemViewModel item = new ResourceItemViewModel(); item.RName = vars[0].ToUpper(); uint n = 0; item.IsRID = uint.TryParse(vars[1], out n); if (item.IsRID) { item.RID = n; } else { item.RPath = vars[1]; } ResourceModel.AddData(item); } } } }
/// <summary> /// Применяет изменения в игру. Записывает выбранное изображение. /// </summary> /// <param name="sender">Отправитель</param> /// <param name="e">Параметры события</param> private void OnApplyClick(object sender, RoutedEventArgs e) { ResourceItemViewModel selectedResource = (ResourceItemViewModel)ItemsComboBox.SelectedValue; bool writeResult = false; if (selectedResource.IsRID) { writeResult = FileSystem.WriteStream(new MemoryStream(SelectedImageBytes), selectedResource.RID); } else { writeResult = FileSystem.WriteStream(new MemoryStream(SelectedImageBytes), selectedResource.RPath); } if (!writeResult) { DialogManager.ShowErrorDialog(LanguageManager.Model.PersonalizationCantWrite); } else { IsGameImageLoaded = LoadGameImage(selectedResource); } }
/// <summary> /// Загрузка текущего изображения из игры /// </summary> /// <param name="item">VM-объект с данными</param> /// <returns></returns> private bool LoadGameImage(ResourceItemViewModel item) { if (item == null) { return(false); } if (FileSystem.IsOpened) { Stream file = item.RID != 0 ? FileSystem.ReadFile(item.RID) : FileSystem.ReadFile(item.RPath); if (file != null) { IsGameImageLoaded = true; MemoryStream ms = new MemoryStream(); file.CopyTo(ms); CurrentImageBytes = ms.ToArray(); CurrentImageControl.Source = LoadTGA(CurrentImageBytes); SaveBtn.Visibility = Visibility.Visible; ms.Close(); return(true); } } return(false); }
public void AddData(ResourceItemViewModel item) { this.IsDataLoaded = true; this.Items.Add(item); NotifyPropertyChanged("Items"); }
/// <summary> /// Загрузка и парсинг файла с ресурсами. Синтакс: /// 1) DESCRIPTION;PATH /// 2) DESCRIPTION;ID /// </summary> private void LoadResourceList() { ResourceModel.UnLoadData(); string[] rlines = null; string rFile = (EnvironmentManager.ResourcesPath + string.Format(RES_LIST_FILE, ConfigurationManager.GetConfiguration(ProfileManager.CurrentProfile.GameModel).GameType)); if (File.Exists(rFile)) { rlines = System.IO.File.ReadAllLines(rFile); for (int i = 0; i < rlines.Length; i++) { if (rlines[i].Length == 0) { continue; } rlines[i] = rlines[i].Trim(); if (rlines[i][0] == '#') { continue; } string[] vars = rlines[i].Split(';'); if (vars.Length > 1) { ResourceItemViewModel item = new ResourceItemViewModel(); item.RName = vars[0].ToUpper(); uint n = 0; item.IsRID = uint.TryParse(vars[1], out n); if (item.IsRID) item.RID = n; else item.RPath = vars[1]; ResourceModel.AddData(item); } } } }
/// <summary> /// Загрузка текущего изображения из игры /// </summary> /// <param name="item">VM-объект с данными</param> /// <returns></returns> private bool LoadGameImage(ResourceItemViewModel item) { if (item == null) { return false; } if (FileSystem.IsOpened) { Stream file = item.RID != 0 ? FileSystem.ReadFile(item.RID) : FileSystem.ReadFile(item.RPath); if (file != null) { IsGameImageLoaded = true; MemoryStream ms = new MemoryStream(); file.CopyTo(ms); CurrentImageBytes = ms.ToArray(); CurrentImageControl.Source = LoadTGA(CurrentImageBytes); SaveBtn.Visibility = Visibility.Visible; ms.Close(); return true; } } return false; }