Ejemplo n.º 1
0
        public static GameObjectHeader GameObjectHeaderReader(this BinaryReader reader)
        {
            GameObjectHeader header = new GameObjectHeader();

            header.version = reader.ReadInt32();
            if (header.version != 0x77)
            {
                throw new InvalidDataException("Unknown object file version: " + header.version);
            }

            header.ProtoId  = reader.ReadObjectGuid_(true);
            header.ObjectId = reader.ReadObjectGuid_(true);

            header.GameObjectType = (ObjectType)reader.ReadUInt32();

            if (!header.ProtoId.IsProto())
            {
                header.propCollectionItems = reader.ReadInt16(); // Actually not really used anymore
            }

            int bitmapLength = (int)Enum.Parse(typeof(Bitmap), header.GameObjectType.ToString());

            header.bitmap = new BitArray(reader.ReadBytes(bitmapLength));

            return(header);
        }
Ejemplo n.º 2
0
        public static void GameObjectHeaderWriter(this BinaryWriter writer, GameObjectHeader header)
        {
            writer.Write(0x77);             //header.version
            writer.WriteObjectGuid_(header.ProtoId, true);
            writer.WriteObjectGuid_(header.ObjectId, true);
            writer.Write((Int32)header.GameObjectType);
            if (!header.ProtoId.IsProto())               //TODO: ARGS & save as proto ?
            {
                writer.Write(header.propCollectionItems);
            }
            var bytes = new byte[header.bitmap.Length / 8];

            header.bitmap.CopyTo(bytes, 0);
            writer.Write(bytes);
        }