示例#1
0
        private void ReadLump(BinaryReader reader)
        {
            var lumpTypeId = reader.ReadByte();
            var lumpLength = reader.ReadInt32();

            var lumpType = PSSLump.GetLumpType(lumpTypeId);

            // skip unknown lumps
            if (lumpType == null)
            {
                reader.ReadBytes(lumpLength); // TODO: Seek would probably be faster
                return;
            }

            var lump = (PSSLump)Activator.CreateInstance(lumpType);

            lump.Read(reader, this);
        }
示例#2
0
        private void WriteLump(BinaryWriter writer, PSSLump lump)
        {
            using (var bufferStream = new MemoryStream())
                using (var bufferWriter = new BinaryWriter(bufferStream))
                {
                    lump.Write(bufferWriter, this);

                    bufferWriter.Flush();
                    bufferWriter.Close();
                    var payload = bufferStream.ToArray();

                    if (payload.Length > 0)
                    {
                        writer.Write(lump.lumpTypeId);
                        writer.Write(payload.Length);
                        writer.Write(payload);
                    }
                }
        }