public static sFolder Unpack(IPluginHost pluginHost, string file) { BinaryReader br = new BinaryReader(File.OpenRead(file)); sFolder descomprimidos = new sFolder(); // Donde guardaremos los archivos descomprimidos sPACK pack = new sPACK(); pack.unknown1 = br.ReadBytes(7); pack.nFiles = br.ReadByte(); pack.unknown2 = br.ReadBytes(8); pack.files = new sPACK.File[pack.nFiles]; for (int i = 0; i < pack.nFiles; i++) // Lectura de nombres y tamaño de archivos { pack.files[i] = new sPACK.File(); byte nameSize = br.ReadByte(); pack.files[i].name = new String(br.ReadChars((int)nameSize)); pack.files[i].size = BitConverter.ToUInt32(br.ReadBytes(4).Reverse().ToArray(), 0); } descomprimidos.files = new List <sFile>(); for (int i = 0; i < pack.nFiles; i++) { sFile newFile = new sFile(); newFile.name = pack.files[i].name; newFile.offset = (uint)br.BaseStream.Position; newFile.path = file; newFile.size = pack.files[i].size; newFile.id = (ushort)i; br.BaseStream.Seek(pack.files[i].size, SeekOrigin.Current); descomprimidos.files.Add(newFile); } br.Close(); return(descomprimidos); }
public static sFolder Unpack(IPluginHost pluginHost, string file) { BinaryReader br = new BinaryReader(File.OpenRead(file)); sFolder descomprimidos = new sFolder(); // Donde guardaremos los archivos descomprimidos sPACK pack = new sPACK(); pack.unknown1 = br.ReadBytes(7); pack.nFiles = br.ReadByte(); pack.unknown2 = br.ReadBytes(8); pack.files = new sPACK.File[pack.nFiles]; for (int i = 0; i < pack.nFiles; i++) // Lectura de nombres y tamaño de archivos { pack.files[i] = new sPACK.File(); byte nameSize = br.ReadByte(); pack.files[i].name = new String(br.ReadChars((int)nameSize)); pack.files[i].size = BitConverter.ToUInt32(br.ReadBytes(4).Reverse().ToArray(), 0); } descomprimidos.files = new List<sFile>(); for (int i = 0; i < pack.nFiles; i++) { sFile newFile = new sFile(); newFile.name = pack.files[i].name; newFile.offset = (uint)br.BaseStream.Position; newFile.path = file; newFile.size = pack.files[i].size; newFile.id = (ushort)i; br.BaseStream.Seek(pack.files[i].size, SeekOrigin.Current); descomprimidos.files.Add(newFile); } br.Close(); return descomprimidos; }