コード例 #1
0
            public Builder Add(string name, object value)
            {
                SerializerMetaData metaData = new SerializerMetaData(
                    name,
                    value.GetType());

                ObjectData.Add(metaData, value);
                return(this);
            }
コード例 #2
0
        /// <summary>
        /// Reads the metadata generated from an
        /// <see cref="ISerializableGameObject"/>.
        /// </summary>
        private List <SerializerMetaData> ReadAllMetaData(
            BinaryReader reader,
            Dictionary <string, Type> expected)
        {
            var metaData = new List <SerializerMetaData>();

            // Read count
            int count = reader.ReadInt32();

            // Read data
            for (int i = 0; i < count; i++)
            {
                SerializerMetaData meta = ReadMetaData(reader, expected);
                metaData.Add(meta);
            }

            return(metaData);
        }
コード例 #3
0
        protected override SerializerMetaData ReadMetaData(
            BinaryReader reader,
            Dictionary <string, Type> expected)
        {
            string name = reader.ReadString();

            if (!expected.ContainsKey(name))
            {
                throw new ArgumentException("Save data loaded a value with an unexpected name");
            }
            Type type     = expected[name];
            long position = reader.ReadInt64();
            long length   = reader.ReadInt64();

            SerializerMetaData meta = new SerializerMetaData(name, type);

            meta = meta.SetPosition(position, length);
            return(meta);
        }
コード例 #4
0
 protected override void WriteMetaData(BinaryWriter writer, SerializerMetaData meta)
 {
     writer.Write(meta.Name);
     writer.Write(meta.Position);
     writer.Write(meta.Length);
 }
コード例 #5
0
 /// <summary>
 /// Writes one value's metadata.
 /// </summary>
 protected abstract void WriteMetaData(BinaryWriter writer, SerializerMetaData meta);