public Pack ( string inPath, string outFilename, string headerName = null, string metadata = null ) : void | ||
inPath | string | |
outFilename | string | |
headerName | string | |
metadata | string | |
return | void |
public static int Pack(List <string> args) { if (args.Count < 2) { PrintPackUsage(); return(-1); } string dir = null; string outName = null; string outHeaderName = null; ushort?bitmask = null; uint? alignment = null; uint? alignmentFirstFile = null; bool orderByExtension = false; bool includeSubdirs = false; bool littleEndian = false; string originalFps4 = null; string metadata = null; string comment = null; uint multiplier = 1; try { for (int i = 0; i < args.Count; ++i) { switch (args[i]) { case "-a": alignment = HexUtils.ParseDecOrHex(args[++i]); break; case "--firstalign": alignmentFirstFile = HexUtils.ParseDecOrHex(args[++i]); break; case "-b": bitmask = (ushort)HexUtils.ParseDecOrHex(args[++i]); break; case "-l": littleEndian = true; break; case "-m": metadata = args[++i]; break; case "-c": comment = UnEscape(args[++i]); break; case "-e": orderByExtension = true; break; case "-s": includeSubdirs = true; break; case "-h": outHeaderName = args[++i]; break; case "-o": originalFps4 = args[++i]; break; case "--multiplier": multiplier = HexUtils.ParseDecOrHex(args[++i]); break; default: if (dir == null) { dir = args[i]; } else if (outName == null) { outName = args[i]; } else { PrintPackUsage(); return(-1); } break; } } } catch (IndexOutOfRangeException) { PrintPackUsage(); return(-1); } if (dir == null || outName == null) { PrintPackUsage(); return(-1); } FPS4 fps4; if (originalFps4 != null) { fps4 = new FPS4(originalFps4); } else { fps4 = new FPS4(); } if (bitmask != null) { fps4.ContentBitmask = new ContentInfo((ushort)bitmask); } if (alignment != null) { fps4.Alignment = (uint)alignment; } if (littleEndian) { fps4.Endian = EndianUtils.Endianness.LittleEndian; } if (comment != null) { fps4.ArchiveName = comment; } string[] files; if (includeSubdirs) { files = System.IO.Directory.GetFiles(dir, "*", System.IO.SearchOption.AllDirectories); } else { files = System.IO.Directory.GetFiles(dir); } if (orderByExtension) { files = files.OrderBy(x => x.Split('.').Last()).ToArray(); } FPS4.Pack( files, outName, fps4.ContentBitmask, fps4.Endian, fps4.Unknown2, originalFps4 != null ? new System.IO.FileStream(originalFps4, System.IO.FileMode.Open) : null, fps4.ArchiveName, fps4.FirstFileStart, fps4.Alignment, headerName: outHeaderName, metadata: metadata, alignmentFirstFile: alignmentFirstFile, fileLocationMultiplier: multiplier ); return(0); }
public static int Pack(List <string> args) { if (args.Count < 2) { PrintPackUsage(); return(-1); } string dir = null; string outName = null; string outHeaderName = null; ushort?bitmask = null; uint? alignment = null; uint? alignmentFirstFile = null; bool orderByExtension = false; bool includeSubdirs = false; bool littleEndian = false; string originalFps4 = null; string metadata = null; string comment = null; uint multiplier = 1; try { for (int i = 0; i < args.Count; ++i) { switch (args[i]) { case "-a": alignment = HexUtils.ParseDecOrHex(args[++i]); break; case "--firstalign": alignmentFirstFile = HexUtils.ParseDecOrHex(args[++i]); break; case "-b": bitmask = (ushort)HexUtils.ParseDecOrHex(args[++i]); break; case "-l": littleEndian = true; break; case "-m": metadata = args[++i]; break; case "-c": comment = UnEscape(args[++i]); break; case "-e": orderByExtension = true; break; case "-s": includeSubdirs = true; break; case "-h": outHeaderName = args[++i]; break; case "-o": originalFps4 = args[++i]; break; case "--multiplier": multiplier = HexUtils.ParseDecOrHex(args[++i]); break; default: if (dir == null) { dir = args[i]; } else if (outName == null) { outName = args[i]; } else { PrintPackUsage(); return(-1); } break; } } } catch (IndexOutOfRangeException) { PrintPackUsage(); return(-1); } if (dir == null || outName == null) { PrintPackUsage(); return(-1); } FPS4 fps4; if (originalFps4 != null) { fps4 = new FPS4(originalFps4, printProgressToConsole: true); } else { fps4 = new FPS4(); } if (bitmask != null) { fps4.ContentBitmask = new ContentInfo((ushort)bitmask); } if (alignment != null) { fps4.Alignment = (uint)alignment; } if (littleEndian) { fps4.Endian = EndianUtils.Endianness.LittleEndian; } if (comment != null) { fps4.ArchiveName = comment; } string[] files; if (includeSubdirs) { files = System.IO.Directory.GetFiles(dir, "*", System.IO.SearchOption.AllDirectories); } else { files = System.IO.Directory.GetFiles(dir); } if (orderByExtension) { files = files.OrderBy(x => x.Split('.').Last()).ToArray(); } Stream outStream = new FileStream(outName, FileMode.Create); Stream outHeaderStream = outHeaderName == null ? null : new FileStream(outHeaderName, FileMode.Create); List <PackFileInfo> packFileInfos = new List <PackFileInfo>(files.Length); foreach (var file in files) { var fi = new System.IO.FileInfo(file); var p = new PackFileInfo(); p.Name = fi.Name; p.Length = fi.Length; if (metadata.Contains('p')) { try { p.RelativePath = FPS4.GetRelativePath(outHeaderName == null ? outName : outHeaderName, fi.FullName); } catch (Exception) { } } p.DataStream = new DuplicatableFileStream(file); packFileInfos.Add(p); } try { FPS4.Pack( packFileInfos, outStream, fps4.ContentBitmask, fps4.Endian, fps4.Unknown2, originalFps4 != null ? new System.IO.FileStream(originalFps4, System.IO.FileMode.Open) : null, fps4.ArchiveName, fps4.FirstFileStart, fps4.Alignment, outputHeaderStream: outHeaderStream, metadata: metadata, alignmentFirstFile: alignmentFirstFile, fileLocationMultiplier: multiplier, printProgressToConsole: true ); } finally { outStream.Close(); if (outHeaderStream != null) { outHeaderStream.Close(); } } return(0); }