Beispiel #1
0
        internal Npc(MemoryReader reader, int version)
        {
            if (190 <= version)
            {
                SpriteId = reader.ReadInt32();
                Type     = "default";
            }
            else
            {
                SpriteId = 0;
                Type     = reader.ReadBString();
            }

            Name       = reader.ReadBString();
            X          = reader.ReadSingle();
            Y          = reader.ReadSingle();
            IsHomeless = reader.ReadBoolean();
            HomeX      = reader.ReadInt32();
            HomeY      = reader.ReadInt32();

            if (213 <= version && reader.ReadBoolean())
            {
                TownVariationIndex = reader.ReadInt32();
            }
            else
            {
                TownVariationIndex = 0;
            }
        }
Beispiel #2
0
        sizeof(CallFlags);          // CallFlags

        void ISerializable.Deserialize(ref MemoryReader reader)
        {
            Hash   = reader.ReadSerializable <UInt160>();
            Method = reader.ReadVarString(32);
            if (Method.StartsWith('_'))
            {
                throw new FormatException();
            }
            ParametersCount = reader.ReadUInt16();
            HasReturnValue  = reader.ReadBoolean();
            CallFlags       = (CallFlags)reader.ReadByte();
            if ((CallFlags & ~CallFlags.All) != 0)
            {
                throw new FormatException();
            }
        }
Beispiel #3
0
        public override void Deserialize(ref MemoryReader reader)
        {
            base.Deserialize(ref reader);
            ChangeViewMessages = reader.ReadSerializableArray <ChangeViewPayloadCompact>(byte.MaxValue).ToDictionary(p => p.ValidatorIndex);
            if (reader.ReadBoolean())
            {
                PrepareRequestMessage = reader.ReadSerializable <PrepareRequest>();
            }
            else
            {
                int preparationHashSize = UInt256.Zero.Size;
                if (preparationHashSize == (int)reader.ReadVarInt((ulong)preparationHashSize))
                {
                    PreparationHash = new UInt256(reader.ReadMemory(preparationHashSize).Span);
                }
            }

            PreparationMessages = reader.ReadSerializableArray <PreparationPayloadCompact>(byte.MaxValue).ToDictionary(p => p.ValidatorIndex);
            CommitMessages      = reader.ReadSerializableArray <CommitPayloadCompact>(byte.MaxValue).ToDictionary(p => p.ValidatorIndex);
        }
Beispiel #4
0
        public void GeneralSerialization()
        {
            var writer = new MemoryWriter();

            writer.Write(true);
            writer.Write(123);
            writer.Write(-0.25f);
            writer.Write('c');

            var guid = Guid.NewGuid();

            writer.Write(guid);

            writer.Write("Hello");

            writer.Write(new Vector2(0.25f, -0.3f));
            writer.Write(new Vector3(0.5f, -0.6f, 0.25f));
            writer.Write(new Vector4(0.75f, -0.9f, -0.4f, 0.333f));
            writer.Write(new Quaternion(0.75f, -0.9f, -0.4f, 0.333f));

            var reader = new MemoryReader(writer.GetBuffer(), writer.Length);

            Assert.True(reader.ReadBoolean());
            Assert.AreEqual(123, reader.ReadInt32());
            Assert.AreEqual(-0.25f, reader.ReadSingle());
            Assert.AreEqual('c', reader.ReadChar());

            Assert.AreEqual(guid, reader.ReadGuid());

            Assert.AreEqual("Hello", reader.ReadString());

            Assert.AreEqual(new Vector2(0.25f, -0.3f), reader.ReadVector2());
            Assert.AreEqual(new Vector3(0.5f, -0.6f, 0.25f), reader.ReadVector3());
            Assert.AreEqual(new Vector4(0.75f, -0.9f, -0.4f, 0.333f), reader.ReadVector4());
            Assert.AreEqual(new Quaternion(0.75f, -0.9f, -0.4f, 0.333f), reader.ReadQuaternion());
        }
Beispiel #5
0
 protected override void DeserializeWithoutType(ref MemoryReader reader, int maxNestDepth)
 {
     Expression = reader.ReadBoolean();
 }