Ejemplo n.º 1
0
        private int CalculateIMGsSize()
        {
            int size = 0;

            foreach (DictionaryEntry entry in Directories)
            {
                WZDirectory directory = (WZDirectory)entry.Value;
                size += directory.CalculateIMGsSize();
            }
            foreach (DictionaryEntry entry in IMGs)
            {
                IMGFile img = (IMGFile)entry.Value;
                size += img.Size;
            }
            return(size);
        }
Ejemplo n.º 2
0
        public override void Write(BinaryWriter file)
        {
            if (dirOffsets.Contains(this))
            {
                WriteOffsetAt(file, (int)dirOffsets[this], (int)file.BaseStream.Position);
            }

            WritePackedInt(file, Directories.Count + IMGs.Count);

            foreach (DictionaryEntry entry in Directories)
            {
                WZDirectory directory = (WZDirectory)entry.Value;
                WriteString(file, directory.Name, 3, 1, true);
                WritePackedInt(file, directory.CalculateIMGsSize());
                WritePackedInt(file, 0); // checksum
                dirOffsets[directory] = (int)file.BaseStream.Position;
                file.Write((int)0);      // keep place for the offset
            }

            foreach (DictionaryEntry entry in IMGs)
            {
                IMGFile img = (IMGFile)entry.Value;
                img.CalculateChecksum();
                WriteString(file, img.Name, 4, 2, true);
                WritePackedInt(file, img.Size);
                WritePackedInt(file, img.Checksum);
                imgOffsets[img] = (int)file.BaseStream.Position;
                file.Write((int)0); // keep place for the offset
            }

            foreach (DictionaryEntry entry in Directories)
            {
                WZDirectory directory = (WZDirectory)entry.Value;
                directory.Write(file);
            }

            /*foreach (DictionaryEntry entry in IMGs)
             * {
             *  IMGFile img = (IMGFile)entry.Value;
             *  img.Write(file);
             * }*/
        }