private void Uninstall_EEPK(string path, _File file) { #if !DEBUG try #endif { EepkToolInterlop.TextureImportMatchNames = true; EepkToolInterlop.AssetReuseMatchName = true; EffectContainerFile binaryFile = (EffectContainerFile)GetParsedFile <EffectContainerFile>(path, false); EffectContainerFile cpkBinFile = (EffectContainerFile)GetParsedFile <EffectContainerFile>(path, true); Section section = file.GetSection(Sections.EEPK_Effect); if (section != null) { binaryFile.UninstallEffects(section.IDs, cpkBinFile); } } #if !DEBUG catch (Exception ex) { string error = string.Format("Failed at {0} uninstall phase ({1}).", ErrorCode.EEPK, path); throw new Exception(error, ex); } #endif }
public AssetSelector(EffectContainerFile _effectFile, bool multiSelect, bool _constrained = false, Xv2CoreLib.EEPK.AssetType _constrainedAssetType = Xv2CoreLib.EEPK.AssetType.EMO, Window parent = null, Asset initialSelection = null) { MultiSelectMode = multiSelect; effectContainerFile = _effectFile; ConstrainedAssetType = _constrainedAssetType; Constrained = _constrained; InitializeComponent(); Owner = parent; DataContext = this; InitializeTabs(initialSelection); InitializeSearchTab(); if (MultiSelectMode) { emoGrid.SelectionMode = DataGridSelectionMode.Extended; pbindGrid.SelectionMode = DataGridSelectionMode.Extended; tbindGrid.SelectionMode = DataGridSelectionMode.Extended; cbindGrid.SelectionMode = DataGridSelectionMode.Extended; lightEmaGrid.SelectionMode = DataGridSelectionMode.Extended; searchGrid.SelectionMode = DataGridSelectionMode.Extended; } else { emoGrid.SelectionMode = DataGridSelectionMode.Single; pbindGrid.SelectionMode = DataGridSelectionMode.Single; tbindGrid.SelectionMode = DataGridSelectionMode.Single; cbindGrid.SelectionMode = DataGridSelectionMode.Single; lightEmaGrid.SelectionMode = DataGridSelectionMode.Single; searchGrid.SelectionMode = DataGridSelectionMode.Single; multiSelectTip.Visibility = Visibility.Hidden; } }
public void SaveParsedFiles() { foreach (var file in cachedFiles) { Directory.CreateDirectory(Path.GetDirectoryName(GeneralInfo.GetPathInGameDir(file.Path))); if (file.FileType == CachedFileType.Parsed && file.Data.GetType() == typeof(EffectContainerFile)) { string savePath = GeneralInfo.GetPathInGameDir(file.Path); EffectContainerFile ecf = (EffectContainerFile)file.Data; ecf.Directory = Path.GetDirectoryName(savePath); ecf.Name = Path.GetFileNameWithoutExtension(savePath); ecf.saveFormat = Xv2CoreLib.EffectContainer.SaveFormat.Binary; ecf.Save(); } else if (file.FileType == CachedFileType.Parsed && file.Data.GetType() == typeof(ACB_File)) { string path = GeneralInfo.GetPathInGameDir(file.Path); string acbPath = string.Format("{0}/{1}", Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path)); ACB_File acbFile = (ACB_File)file.Data; acbFile.Save(acbPath, true); } else if (file.FileType == CachedFileType.Parsed) { File.WriteAllBytes(GeneralInfo.GetPathInGameDir(file.Path), file.GetBytes()); } } }
private void Add(string path, object data, CachedFileType type, bool allowOverwrite = true) { var cachedFile = new CachedFile(path, data, allowOverwrite); if (data.GetType() == typeof(EffectContainerFile)) { EffectContainerFile ecf = EffectContainerFile.New(); ecf.AddEffects(((EffectContainerFile)data).Effects); cachedFile.backupEffectContainerFile = ecf; } else if (data.GetType() == typeof(ACB_File)) { //Might be better to change this to a shallow-copy ACB_File acb = ACB_File.NewXv2Acb(); foreach (var cue in ((ACB_File)data).Cues) { acb.CopyCue((int)cue.ID, (ACB_File)data); } cachedFile.backupBgmFile = acb; } cachedFiles.Add(cachedFile); }
private void Menu_New_Click(object sender, RoutedEventArgs e) { if (effectContainerFile != null) { var ret = MessageBox.Show(this, String.Format("Do you want to save the currently opened file first?", effectContainerFile.Name), "Open", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); if (ret == MessageBoxResult.Yes) { if (effectContainerFile.CanSave) { Menu_Save_Click(null, null); } else { Menu_SaveAs_Click(null, null); } } else if (ret == MessageBoxResult.Cancel) { return; } } effectContainerFile = EffectContainerFile.New(); UpdateSelectedVersion(); CloseOpenWindows(); }
/// <summary> /// Hue shift all assets, materials and textures in a EffectContainerFile. /// </summary> public RecolorAll_HueSet(EffectContainerFile _effectContainerFile, Window parent) { currentMode = Mode.Global; effectContainerFile = _effectContainerFile; InitializeComponent(); Owner = parent; DataContext = this; }
public void EepkLoaded(EffectContainerFile effectContainerFile) { if (effectContainerFile == null) { return; } NameList nameListToUse = GetNameListForFile(effectContainerFile.Name); if (nameListToUse != null) { ApplyNameList(effectContainerFile.Effects, nameListToUse); } }
public EffectSelector(IList <Effect> effects, EffectContainerFile mainContainerFile, Window parent, Mode mode = Mode.ImportEffect) { currentMode = mode; Effects = new List <Effect>(effects); MainContainerFile = mainContainerFile; InitializeComponent(); DataContext = this; Owner = parent; switch (currentMode) { case Mode.ExportEffect: Title = "Export Effects"; break; } }
public AssetSelector(EffectContainerFile _effectFile, bool multiSelect, bool _constrained = false, Xv2CoreLib.EEPK.AssetType _constrainedAssetType = Xv2CoreLib.EEPK.AssetType.EMO, EepkEditor parent = null, Asset initialSelection = null) { MultiSelectMode = multiSelect; effectContainerFile = _effectFile; ConstrainedAssetType = _constrainedAssetType; Constrained = _constrained; InitializeComponent(); Owner = Application.Current.MainWindow; DataContext = this; InitializeTabs(initialSelection); InitializeSearchTab(); if (MultiSelectMode) { emoGrid.SelectionMode = DataGridSelectionMode.Extended; pbindGrid.SelectionMode = DataGridSelectionMode.Extended; tbindGrid.SelectionMode = DataGridSelectionMode.Extended; cbindGrid.SelectionMode = DataGridSelectionMode.Extended; lightEmaGrid.SelectionMode = DataGridSelectionMode.Extended; searchGrid.SelectionMode = DataGridSelectionMode.Extended; } else { emoGrid.SelectionMode = DataGridSelectionMode.Single; pbindGrid.SelectionMode = DataGridSelectionMode.Single; tbindGrid.SelectionMode = DataGridSelectionMode.Single; cbindGrid.SelectionMode = DataGridSelectionMode.Single; lightEmaGrid.SelectionMode = DataGridSelectionMode.Single; searchGrid.SelectionMode = DataGridSelectionMode.Single; multiSelectTip.Visibility = Visibility.Hidden; } //Events emoGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; pbindGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; tbindGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; cbindGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; lightEmaGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; searchGrid.PreviewKeyUp += MetroWindow_PreviewKeyDown; emoGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; pbindGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; tbindGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; cbindGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; lightEmaGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; searchGrid.MouseDoubleClick += EmoGrid_MouseDoubleClick; }
private async void Load(string path = null) { //If a file is already loaded then ask for confirmation if (effectContainerFile != null) { var ret = MessageBox.Show(App.Current.MainWindow, String.Format("Do you want to save the currently opened file first?", effectContainerFile.Name), "Open", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); if (ret == MessageBoxResult.Yes) { if (effectContainerFile.CanSave) { Menu_Save_Click(null, null); } else { Menu_SaveAs_Click(null, null); } } else if (ret == MessageBoxResult.Cancel) { return; } } //Clear Undo stack UndoManager.Instance.Clear(); //Load the eepk + assets EffectContainerFile file = null; if (path == null) { file = await eepkEditor.LoadEffectContainerFile(false); } else { file = await eepkEditor.LoadEffectContainerFile(path, false); } if (file != null) { CloseOpenWindows(); effectContainerFile = file; UpdateSelectedVersion(); } }
private void Load() { if (fileIO == null) { //Load files directly if (System.IO.Path.GetExtension(FilePath) == ".eepk") { effectContainerFile = EffectContainerFile.Load(FilePath); } else if (System.IO.Path.GetExtension(FilePath) == EffectContainerFile.ZipExtension) { effectContainerFile = EffectContainerFile.LoadVfx2(FilePath); } } else { //Load from game effectContainerFile = EffectContainerFile.Load(FilePath, fileIO, onlyFromCpk); } }
public void CacheFile(string path, EffectContainerFile file, string source) { string name = System.IO.Path.GetFileNameWithoutExtension(path); path = path.Replace(@"//", @"/").Replace(@"\\", @"/").Replace(@"\", @"/").ToLower(); //If file is already cached, then remove it if (IsFileCached(path)) { if (!RemoveCachedFile(path)) { throw new Exception(String.Format("CacheFile: Cannot remove existing cached file instance for \"{0}\".", path)); } } if (SettingsManager.settings.FileCacheLimit == 0) { return; //caching is disabled } else if (SettingsManager.settings.FileCacheLimit > 0) { if (CachedFiles.Count >= SettingsManager.settings.FileCacheLimit) { CachedFiles.RemoveAt(0); //CachedFiles.RemoveRange(0, CachedFiles.Count - GeneralInfo.CacheFileLimit + 1); } CachedFiles.Add(new CachedFile() { Path = path, effectContainerFile = file, Name = name, Source = source }); } }