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(); } } } }
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); }
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); }
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); } }
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; }