Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
Arquivo: PACK.cs Projeto: MetLob/tinke
        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;
        }