Sfall-ScriptEditor

Форк
0
70 строк · 2.3 Кб
1
using System.Diagnostics;
2
using System.IO;
3
using System.Windows.Forms;
4

5
namespace ScriptEditor.TextEditorUtilities
6
{
7
    public class UndatFile
8
    {
9
        private static string TempDatFile = null;
10
        internal static string selectDatFile = null;
11

12
        private string dat2exe;
13
        private string selectDatPath;
14

15
        public UndatFile()
16
        {
17
            dat2exe = Path.Combine(Settings.ResourcesFolder, "dat2.exe");
18
        }
19

20
        public bool UnpackFile(ref string file)
21
        {
22
            bool success = false;
23

24
            selectDatPath = selectDatFile;
25
            if (selectDatFile == null) {
26
                var ofd = new OpenFileDialog() {
27
                     InitialDirectory = TempDatFile ?? Settings.ProgramFolder,
28
                     DefaultExt = "dat",
29
                     Filter = "Fallout dat file (.dat)|*.dat",
30
                     Title = "Select fallout dat file"
31
                };
32
                if (ofd.ShowDialog() == DialogResult.OK)
33
                    selectDatPath = selectDatFile = TempDatFile = ofd.FileName;
34
                else {
35
                    file = null;
36
                    return success;
37
                }
38
            }
39
            //check .dat file
40
            if (File.Exists(selectDatPath)) {
41
                string sFile = Path.GetFileName(file);
42

43
                //unpack from .dat
44
                ProcessStartInfo psi = new ProcessStartInfo(dat2exe, GetCommandLine(sFile));
45
                psi.UseShellExecute = false;
46
                psi.CreateNoWindow = true;
47
                psi.WorkingDirectory = Settings.ResourcesFolder;
48
                Process wp = Process.Start(psi);
49
                wp.WaitForExit(1000);
50
                success = (wp.ExitCode == 0);
51
                wp.Dispose();
52

53
                if (success) {
54
                    file = Settings.scriptTempPath + @"\" + sFile;
55
                    if (!File.Exists(file))
56
                        success = false;
57
                }
58
            }
59
            if (!success) selectDatFile = null;
60
            return success;
61
        }
62

63
        private string GetCommandLine(string sFile)
64
        {
65
            return "x -p -d \"" + Settings.scriptTempPath + "\" \""
66
                    + selectDatPath + "\" "
67
                    + @"scripts\" + sFile;
68
        }
69
    }
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.