Exemple #1
0
        public void Write(string path)
        {
            var stream = File.Open(path, FileMode.Create);
            var writer = new MarkedBinaryWriter(stream);

            writer.Write(0x32465052); // RPF2

            writer.Mark("tocSize");
            writer.Write(0);

            writer.Mark("numEntries");
            writer.Write(0);

            writer.Write(0);
            writer.Write(0); // not encrypted; for now

            writer.Align(2048);

            // write a TOC for the file
            RootEntry.Write(writer);
            RootEntry.WriteSubEntries(writer);
            RootEntry.WriteNames(writer);

            writer.WriteMark("numEntries", (uint)writer.WriteIdx);

            writer.Align(2048);

            // this has to be aligned or it will be cut off by 16 byte align
            writer.WriteMark("tocSize", (uint)stream.Position - 2048);

            RootEntry.WriteFiles(writer);

            writer.Close();
        }
Exemple #2
0
        internal void WriteFiles(MarkedBinaryWriter writer)
        {
            if (!IsDirectory)
            {
                writer.WriteMark("fOff_" + Name, ((uint)writer.BaseStream.Position & 0xffffff00) | ResourceVersion);

                writer.Write(FileData);

                writer.Align(2048);
            }

            foreach (var entry in m_subEntries)
            {
                entry.WriteFiles(writer);
            }
        }
Exemple #3
0
        internal void WriteFiles(MarkedBinaryWriter writer)
        {
            if (!IsDirectory)
            {
                writer.WriteMark("fOff_" + Name, ((uint)writer.BaseStream.Position & 0xffffff00) | ResourceVersion);

                writer.Write(FileData);

                writer.Align(2048);
            }

            foreach (var entry in m_subEntries)
            {
                entry.WriteFiles(writer);
            }
        }