Exemple #1
0
    static public void CellClick(object sender, EventArgs a)
    {
        DataGridViewCell Cell = Extractor.Data.CurrentCell;

        if (Extractor.Box.SelectedItem != null)
        {
            string     FullName = (Extractor.Box.SelectedItem as FileInfo).FullName;
            PakFile    Pak      = _Paks[FullName];
            PakElement Element  = Pak._Elements.Find(info => info.Id == int.Parse(Cell.OwningRow.Cells[0].Value.ToString()));

            if (Cell.OwningColumn.Name == "Extract")
            {
                if (Element != null)
                {
                    AddToExtract(Element);
                }
            }
            else if (Cell.OwningColumn.Name == "Software")
            {
                if (Element != null)
                {
                    Element.OpenSoftware();
                }
            }
        }
    }
Exemple #2
0
    public void DeList()
    {
        if (_Elements.Count > 0)
        {
            return;
        }

        Decoded = false;
        Extractor.Instance.Progress(0);

        if (Headers == null)
        {
            Headers          = new PakHeaders();
            Headers.FileName = FileName;
            Headers.One      = Stream.GetInt();
            Headers.FileSize = Stream.GetInt();
            Headers.Padding  = Stream.GetInt();

            Headers.Hsize = Stream.GetInt();

            Headers.HeaderSize = Headers.Hsize / 60;

            for (int i = 0; i < Headers.HeaderSize; i++)
            {
                FileHeader Header = new FileHeader();

                string Unk1 = Stream.GetString(20);

                Header.ZSize = Stream.GetInt();
                Header.Size  = Stream.GetInt();
                Header.Unk2  = Stream.GetInt();
                Header.Start = Stream.GetInt();

                string Unk3 = Stream.GetString(24);

                Headers.Files.Add(Header);

                Extractor.Instance.Tool("Reading header :" + i + "/" + Headers.HeaderSize + ": " + Headers.FileName);
                Extractor.Instance.Progress((i * 100) / Headers.HeaderSize);
            }
        }

        int Total = Headers.Files.Count;

        for (int i = 0; i < Total; ++i)
        {
            Extractor.Instance.Progress((i * 100) / Total);
            FileHeader Header = Headers.Files[i];
            PakElement Ep     = new PakElement(this, Header, Stream);
            Ep.GetExtention();
            _Elements.Add(Ep);
        }

        ExtractorMgr.SaveHeader(Headers);

        Extractor.Instance.Progress(100);
        Decoded = true;
    }
    public static void AddToExtract(PakElement Element)
    {
        if (ExtractingFolder.Length <= 0)
        {
            FolderBrowserDialog Dial = new FolderBrowserDialog();
            Dial.SelectedPath = Directory.GetCurrentDirectory();
            Dial.ShowDialog();
            ExtractingFolder = Dial.SelectedPath;
            if (ExtractorMgr.ExtractingFolder.Length <= 0)
                return;

        }

        if (!Extractor.Instance.IsChecked(Element.Header.Ext))
            return;

        lock (_ToExtract)
            _ToExtract.Add(Element);
    }
Exemple #4
0
    static public void AddToExtract(PakElement Element)
    {
        if (ExtractingFolder.Length <= 0)
        {
            FolderBrowserDialog Dial = new FolderBrowserDialog();
            Dial.SelectedPath = Directory.GetCurrentDirectory();
            Dial.ShowDialog();
            ExtractingFolder = Dial.SelectedPath;
            if (ExtractorMgr.ExtractingFolder.Length <= 0)
            {
                return;
            }
        }

        if (!Extractor.Instance.IsChecked(Element.Header.Ext))
        {
            return;
        }

        lock (_ToExtract)
            _ToExtract.Add(Element);
    }
Exemple #5
0
    static public void Extracting()
    {
        while (IsRunning)
        {
            PakElement[] ToExtract;
            lock (_ToExtract)
            {
                ToExtract = _ToExtract.ToArray();
                _ToExtract.Clear();
            }

            if (ToExtract.Length > 0)
            {
                int Total = ToExtract.Length;
                for (int i = 0; i < Total; ++i)
                {
                    Extractor.Instance.Progress((i * 100) / Total);

                    PakElement Element = ToExtract[i];

                    Extractor.Instance.Tool("Extracting : " + Element.Id + " From " + Element.Owner.FileName);
                    string Folder = ExtractingFolder + "/Extracted/" + Element.Owner.FileName + "/";
                    Directory.CreateDirectory(Folder);

                    Element.GetBytes();
                    FileStream Stream = new FileStream(Folder + "/" + Element.Id + Element.Header.Ext, FileMode.Create);
                    Stream.Write(Element.dat, 0, Element.dat.Length);
                    Stream.Close();
                    Element.dat = null;

                    Thread.Sleep(20);
                }
            }

            Thread.Sleep(50);
        }
    }
Exemple #6
0
    public void DeList()
    {
        if (_Elements.Count > 0)
            return;

        Decoded = false;
        Extractor.Instance.Progress(0);

        if (Headers == null)
        {
            Headers = new PakHeaders();
            Headers.FileName = FileName;
            Headers.One = Stream.GetInt();
            Headers.FileSize = Stream.GetInt();
            Headers.Padding = Stream.GetInt();

            Headers.Hsize = Stream.GetInt();

            Headers.HeaderSize = Headers.Hsize / 60;

            for (int i = 0; i < Headers.HeaderSize; i++)
            {
                FileHeader Header = new FileHeader();

                string Unk1 = Stream.GetString(20);

                Header.ZSize = Stream.GetInt();
                Header.Size = Stream.GetInt();
                Header.Unk2 = Stream.GetInt();
                Header.Start = Stream.GetInt();

                string Unk3 = Stream.GetString(24);

                Headers.Files.Add(Header);

                Extractor.Instance.Tool("Reading header :" + i + "/" + Headers.HeaderSize + ": " + Headers.FileName);
                Extractor.Instance.Progress((i * 100) / Headers.HeaderSize);
            }
        }

        int Total = Headers.Files.Count;
        for (int i = 0; i < Total; ++i)
        {
            Extractor.Instance.Progress((i * 100) / Total);
            FileHeader Header = Headers.Files[i];
            PakElement Ep = new PakElement(this, Header, Stream);
            Ep.GetExtention();
            _Elements.Add(Ep);
        }

        ExtractorMgr.SaveHeader(Headers);

        Extractor.Instance.Progress(100);
        Decoded = true;
    }