Example #1
0
        private byte[] WriteHiz(HizArchive hizArchive)
        {
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);

            writer.Write(hizArchive.header);
            writer.Write((byte)0);// header
            writer.Write(hizArchive.file_count);
            writer.Write(hizArchive.max_compress_size);

            for (int i = 0; i < hizArchive.file_count; i++)
            {
                HizFile hizFile = hizArchive.hizFiles[i];
                Console.WriteLine("Packing {0}", hizFile.name);
                writer.Write(decoder.DecodeData(BitConverter.GetBytes((short)hizFile.type)));
                writer.Write(decoder.DecodeData(BitConverter.GetBytes(hizFile.compress_size)));
                writer.Write(decoder.DecodeData(BitConverter.GetBytes(hizFile.decompress_size)));
                writer.Write(decoder.DecodeData(BitConverter.GetBytes((short)hizFile.name.Length)));
                writer.Write(decoder.DecodeData(Encoding.UTF8.GetBytes(hizFile.name)));
                writer.Write(hizFile.data);
            }
            Console.WriteLine("\nPacked {0} files.", hizArchive.file_count);
            writer.Close();
            return(stream.ToArray());
        }
Example #2
0
        private void ReadHizArchive(byte[] hiz_buffer)
        {
            BinaryReader reader = new BinaryReader(new MemoryStream(hiz_buffer));

            HizArchive = new HizArchive();
            if (!ReadHizHeader(reader))
            {
                return;
            }
            Console.WriteLine("File count: {0}\nChecksum: 0x{1}\nMax compress size: {2}\n",
                              HizArchive.file_count, checksum.ToString("X"), HizArchive.max_compress_size);

            HizArchive.hizFiles = new HizFile[HizArchive.file_count];
            for (int i = 0; i < HizArchive.file_count; i++)
            {
                HizFile hizFile = new HizFile();
                hizFile.type            = decoder.DecodeInt16(reader);
                hizFile.compress_size   = decoder.DecodeInt32(reader);
                hizFile.decompress_size = decoder.DecodeInt32(reader);
                int    name_len = decoder.DecodeInt16(reader);
                byte[] name     = decoder.DecodeData(reader.ReadBytes(name_len));
                hizFile.name = Encoding.UTF8.GetString(name);
                if (hizFile.isCompressed())
                {
                    hizFile.data = Unzip.GetData(reader.ReadBytes(hizFile.compress_size), true);
                }
                else
                {
                    hizFile.data = reader.ReadBytes(hizFile.decompress_size);
                }
                HizArchive.hizFiles[i] = hizFile;
            }
        }
Example #3
0
        public void Write(HizArchive hizArchive, string name)
        {
            BinaryWriter writer = new BinaryWriter(File.OpenWrite(name));

            Console.WriteLine("Write {0}:", name);
            decoder.Clear();
            byte[] hiz_data = WriteHiz(hizArchive);
            writer.Write("H2Z".ToCharArray());
            writer.Write((byte)0);         // header
            writer.Write(0);               //checksum
            writer.Write(hiz_data.Length); //buffer_size
            writer.Write(hiz_data);
            writer.Close();
        }
Example #4
0
 public void ReadFromDir(string dir)
 {
     HizArchive = new HizArchive();
     HizFile[] hizFiles = ReadHizFilesFromDir(dir);
     if (hizFiles.Length == 0)
     {
         Console.WriteLine("Hiz files count = 0.");
         return;
     }
     HizArchive.header            = "HIZ".ToCharArray();
     HizArchive.file_count        = hizFiles.Length;
     HizArchive.max_compress_size = 0;
     HizArchive.hizFiles          = hizFiles;
 }