static void SaveFile(GameFile objectFile, string savePath, string openedFileDir, Parameters parameters) { if (objectFile.GameData is PTP ptp) { if (parameters.AsBMD) { string path = savePath == "" ? Path.Combine(openedFileDir, Path.GetFileNameWithoutExtension(objectFile.Name) + ".BMD") : savePath; Encoding encoding = Static.NewEncoding(); BMD bmd = new BMD(objectFile.GameData as PTP, encoding); File.WriteAllBytes(path, bmd.GetData()); } else { string path = savePath == "" ? Path.Combine(openedFileDir, objectFile.Name) : savePath; File.WriteAllBytes(path, ptp.GetData()); } } else { string path = savePath == "" ? Path.Combine(openedFileDir, Path.GetFileNameWithoutExtension(objectFile.Name) + "(NEW)" + Path.GetExtension(objectFile.Name)) : savePath; File.WriteAllBytes(path, objectFile.GameData.GetData()); } }
private void ContextMenu_SaveAs() { SaveFileDialog SFD = new SaveFileDialog(); SFD.OverwritePrompt = true; SFD.AddExtension = false; SFD.FileName = PersonaFile.Name.Replace('/', '+'); SFD.Filter = $"RAW(*{Path.GetExtension(SFD.FileName)})|*{Path.GetExtension(SFD.FileName)}"; if (PersonaFile.GameData is IImage) { SFD.Filter += $"|PNG (*.png)|*.png"; } if (PersonaFile.GameData is ITable) { SFD.Filter += $"|XML data table (*.xml)|*.xml"; } if (PersonaFile.GameData is BMD) { SFD.Filter += $"|Persona Text Project (*.ptp)|*.ptp"; } if (PersonaFile.GameData is PTP) { SFD.Filter += $"|BMD Text File (*.bmd)|*.bmd"; } SFD.InitialDirectory = Path.GetDirectoryName(Static.OpenedFile); if (SFD.ShowDialog() == true) { if (SFD.FilterIndex == 1) { File.WriteAllBytes(SFD.FileName, PersonaFile.GameData.GetData()); } else { string ext = Path.GetExtension(SFD.FileName); if (ext.Equals(".png", StringComparison.CurrentCultureIgnoreCase)) { PersonaEditorCMD.PersonaEditorTools.SaveImageFile(PersonaFile, SFD.FileName); } else if (ext.Equals(".ptp", StringComparison.CurrentCultureIgnoreCase)) { var result = ToolBox.Show(ToolBoxType.SaveAsPTP); if (result == ToolBoxResult.Ok) { PersonaEncoding temp = ApplicationSettings.AppSetting.Default.SaveAsPTP_CO2N ? Static.EncodingManager.GetPersonaEncoding(ApplicationSettings.AppSetting.Default.SaveAsPTP_Font) : null; PersonaEditorCMD.PersonaEditorTools.SavePTPFile(PersonaFile, SFD.FileName, temp); } } else if (ext.Equals(".bmd", StringComparison.CurrentCultureIgnoreCase)) { Encoding encoding = Static.EncodingManager.GetPersonaEncoding(ApplicationSettings.AppSetting.Default.PTPNewDefault); BMD bmd = new BMD(PersonaFile.GameData as PTP, encoding); File.WriteAllBytes(SFD.FileName, bmd.GetData()); } else if (ext.Equals(".xml", StringComparison.CurrentCultureIgnoreCase)) { PersonaEditorCMD.PersonaEditorTools.SaveTableFile(PersonaFile, SFD.FileName); } else { throw new Exception("SavePersonaFileDialog"); } } } }