//EXTRACT ALL FILES private void buttonExtractAll_Click(object sender, EventArgs e) { FolderBrowserDialog toExtractTo = new FolderBrowserDialog(); toExtractTo.Description = "Extract the contents to where?"; DialogResult result = toExtractTo.ShowDialog(); if (result == DialogResult.OK) { BinaryWriter currentOutput; string selFolder = toExtractTo.SelectedPath; using (BinaryReader fileReader = new BinaryReader(File.Open(archiveName, FileMode.Open))) //Read the open archive to go through all the files { foreach (TreeNode currentFile in treeView1.Nodes) { AT7FileNode dealingWith = currentFile.Tag as AT7FileNode; Console.WriteLine($"{selFolder}\\{dealingWith.getName()}"); currentOutput = new BinaryWriter(File.Open($"{selFolder}\\{dealingWith.getName()}", FileMode.Create)); fileReader.BaseStream.Position = dealingWith.getOffset(); currentOutput.Write(fileReader.ReadBytes((int)dealingWith.getSize())); currentOutput.Close(); } } DialogResult extractedYay = new DialogResult(); extractedYay = MessageBox.Show($"All files of {Path.GetFileName(archiveName)} extracted to {selFolder}."); } }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { fileDetailsNode = e.Node.Tag as AT7FileNode; //Console.WriteLine(fileDetailsNode.ToString()); infoTools.Text = fileDetailsNode.ToString(); fileExtension = fileDetailsNode.getExt(); fileName = fileDetailsNode.getName(); fileOffset = fileDetailsNode.getOffset(); fileSize = fileDetailsNode.getSize(); fileExtInfoBox.Text = fileExtension; AT7FileTypes.fileTypesDict.TryGetValue(fileExtension, out fileDesc); //Nabs the file description for the display label fileTypeDesc.Text = fileDesc; buttonExtract.Enabled = true; buttonExportAs.Enabled = false; buttonExportAs.Text = "Export As"; if (fileName.Equals("gmm.txt")) { buttonExportAs.Enabled = true; buttonExportAs.Text = "Export .csv"; } else if (fileExtension.Equals(".tex")) { buttonExportAs.Enabled = true; buttonExportAs.Text = "Export .tpl"; } buttonReplace.Enabled = true; //Console.WriteLine(treeView1.Nodes[0].Tag.ToString()); //Console.WriteLine("Offset: {0:X}", fileDetailsNode.getOffset() + "\n Size: {0:X}", fileDetailsNode.getSize()); }
private void loadThatFile() { fileCount = 0; treeView1.Nodes.Clear(); BinaryReader quickie = new BinaryReader(File.Open(archiveName, FileMode.Open)); fileThings = new byte[0x1C]; fileThings = quickie.ReadBytes(0x1C); if (fileThings[0] == 0x41 && fileThings[1] == 0x54 && fileThings[2] == 0x37 && fileThings[3] == 0x50) { /*DialogResult pleaseWait = new DialogResult(); * pleaseWait = MessageBox.Show("Decompressing file...");*/ //fileTypeDesc.Text = $"Compressed data opened. Decompressing to {Path.GetFileName(archiveName)}"; AT7FileProcessor.decompressAT7P(quickie, archiveName); archiveName = archiveName.Insert(archiveName.Length, ".raw"); DialogResult decompressedTheFile = new DialogResult(); decompressedTheFile = MessageBox.Show($"Archive decompressed as {Path.GetFileName(archiveName)}. Be sure to open this one from now on and not the one you just opened."); //fileTypeDesc.ResetText(); } quickie.Close(); Console.WriteLine(archiveName); using (BinaryReader fileReader = new BinaryReader(File.Open(archiveName, FileMode.Open))) { Console.WriteLine(archiveName); //progressBarExtract.Maximum = (int)fileReader.BaseStream.Length; fileThings = new byte[0x1C]; fileThings = fileReader.ReadBytes(0x1C); //fileDetailsNode = new List<uint>(); while (!Enumerable.SequenceEqual(fileThings, namesEnd)) { Console.WriteLine(BitConverter.ToString(fileThings)); //Now to prepare the filename's real length to remove the junk text fileNameLength = 0; for (int i = 8; fileThings[i] != 0x00; i++) { fileNameLength++; } fileName = Encoding.UTF8.GetString(fileThings, 8, fileNameLength); TreeNode toAdd = new TreeNode(fileName); //Now let's nab that file extension fileExtension = "???"; foreach (string thing in AT7FileTypes.fileTypes) { if (fileName.Contains(thing)) { fileExtension = thing; } } AT7FileNode currentNode = new AT7FileNode(ReverseBytes(BitConverter.ToUInt32(fileThings, 4)), ReverseBytes(BitConverter.ToUInt32(fileThings, 0)), fileName, fileExtension); /*fileOffset = ReverseBytes(BitConverter.ToUInt32(fileThings, 0)); * fileSize = ReverseBytes(BitConverter.ToUInt32(fileThings, 4)); * fileDetailsNode.Add(fileOffset); fileDetailsNode.Add(fileSize);*/ toAdd.Tag = currentNode; toAdd.ImageIndex = AT7FileTypes.fileTypes.IndexOf(fileExtension); toAdd.SelectedImageIndex = AT7FileTypes.fileTypes.IndexOf(fileExtension); treeView1.Nodes.Add(toAdd); /*fileName = Encoding.UTF8.GetString(fileThings, 8, fileNameLength); //Aaaaaaaand filename applied * //fileName = fileName.Substring(0, fileName.IndexOf("?")); * //TreeNode fileNode new TreeNode();*/ Console.WriteLine(treeView1.Nodes[fileCount].Text); fileCount++; fileThings = fileReader.ReadBytes(0x1C); //While loop ends with this } } }