Sfall-ScriptEditor
70 строк · 2.3 Кб
1using System.Diagnostics;2using System.IO;3using System.Windows.Forms;4
5namespace ScriptEditor.TextEditorUtilities6{
7public class UndatFile8{9private static string TempDatFile = null;10internal static string selectDatFile = null;11
12private string dat2exe;13private string selectDatPath;14
15public UndatFile()16{17dat2exe = Path.Combine(Settings.ResourcesFolder, "dat2.exe");18}19
20public bool UnpackFile(ref string file)21{22bool success = false;23
24selectDatPath = selectDatFile;25if (selectDatFile == null) {26var ofd = new OpenFileDialog() {27InitialDirectory = TempDatFile ?? Settings.ProgramFolder,28DefaultExt = "dat",29Filter = "Fallout dat file (.dat)|*.dat",30Title = "Select fallout dat file"31};32if (ofd.ShowDialog() == DialogResult.OK)33selectDatPath = selectDatFile = TempDatFile = ofd.FileName;34else {35file = null;36return success;37}38}39//check .dat file40if (File.Exists(selectDatPath)) {41string sFile = Path.GetFileName(file);42
43//unpack from .dat44ProcessStartInfo psi = new ProcessStartInfo(dat2exe, GetCommandLine(sFile));45psi.UseShellExecute = false;46psi.CreateNoWindow = true;47psi.WorkingDirectory = Settings.ResourcesFolder;48Process wp = Process.Start(psi);49wp.WaitForExit(1000);50success = (wp.ExitCode == 0);51wp.Dispose();52
53if (success) {54file = Settings.scriptTempPath + @"\" + sFile;55if (!File.Exists(file))
56success = false;
57}
58}
59if (!success) selectDatFile = null;
60return success;
61}
62
63private string GetCommandLine(string sFile)
64{
65return "x -p -d \"" + Settings.scriptTempPath + "\" \""66+ selectDatPath + "\" "67+ @"scripts\" + sFile;68}69}70}
71