public static ListArchiveFile Create(PAKToolArchiveFile pak) { ListArchiveFile arc = new ListArchiveFile(); foreach (PAKToolArchiveEntry entry in pak.Entries) { arc.Entries.Add(new ListArchiveFileEntry(entry.Name, entry.Data)); } return arc; }
static void ConvertEntry(ref ListArchiveFileEntry entry) { using (MemoryStream mStream = new MemoryStream(entry.Data)) { if (ListArchiveFile.VerifyFileType(mStream)) { ListArchiveFile subArc = new ListArchiveFile(mStream); for (int i = 0; i < subArc.EntryCount; i++) { ListArchiveFileEntry subEntry = subArc.Entries[i]; ConvertEntry(ref subEntry); subArc.Entries[i] = subEntry; } entry = new ListArchiveFileEntry(entry.Name, PAKToolArchiveFile.Create(subArc).GetBytes()); } } }
static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("No input specified."); Console.WriteLine("Usage:"); Console.WriteLine(" Enter path to an ARC file to convert it to a PAK file OR"); Console.WriteLine(" Enter path to a PAK file to convert it to an ARC file."); Console.WriteLine("Press any key to continue."); Console.ReadKey(); return; } if (ListArchiveFile.VerifyFileType(args[0])) { ListArchiveFile arc = new ListArchiveFile(args[0]); for (int i = 0; i < arc.EntryCount; i++) { ListArchiveFileEntry entry = arc.Entries[i]; ConvertEntry(ref entry); arc.Entries[i] = entry; } PAKToolArchiveFile pak = PAKToolArchiveFile.Create(arc); pak.Save(args[0] + ".pak"); } else if (PAKToolArchiveFile.VerifyFileType(args[0])) { PAKToolArchiveFile pak = new PAKToolArchiveFile(args[0]); for (int i = 0; i < pak.EntryCount; i++) { PAKToolArchiveEntry entry = pak.Entries[i]; ConvertEntry(ref entry); pak.Entries[i] = entry; } ListArchiveFile arc = ListArchiveFile.Create(pak); arc.Save(args[0] + ".arc"); } else { Console.WriteLine("File supplied is not an ARC or PAK file!"); } }
static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("No input specified."); Console.WriteLine("Usage:"); Console.WriteLine(" Enter path to ARC file to extract it to a folder of the same name."); Console.WriteLine(" Enter path to directory to pack into an ARC."); Console.WriteLine("Press any key to continue."); Console.ReadKey(); return; } if (Path.HasExtension(args[0])) { if (!ListArchiveFile.VerifyFileType(args[0])) { Console.WriteLine("This is not a proper arc file!"); if (PAKToolArchiveFile.VerifyFileType(args[0])) { Console.WriteLine("Detected format: regular .bin/.pac/.pak archive."); } return; } ListArchiveFile arc = new ListArchiveFile(args[0]); string path = Path.GetFileNameWithoutExtension(args[0]); Directory.CreateDirectory(path); for (int i = 0; i < arc.EntryCount; i++) { File.WriteAllBytes(path + "//" + arc.Entries[i].Name, arc.Entries[i].Data); } } else if (!Path.HasExtension(args[0])) { ListArchiveFile arc = ListArchiveFile.Create(args[0]); arc.Save(Path.GetFileName(args[0]) + ".arc"); } }
/*********************************/ /* Base wrapper method overrides */ /*********************************/ internal override void RebuildWrappedObject() { var archive = new ListArchiveFile(); foreach (ResourceWrapper node in Nodes) { archive.Entries.Add(new ListArchiveFileEntry(node.Text, node.GetMemoryStream())); } m_wrappedObject = archive; m_isDirty = false; }
/***************/ /* Constructor */ /***************/ public ListArchiveFileWrapper(string text, ListArchiveFile arc) : base(text, arc, SupportedFileType.ListArchiveFile, false) { }