示例#1
0
        public void ReadData(MemoryStream stream)
        {
            var origPos = stream.Position;
            var pos     = stream.SearchForBytePattern(MagicStuff.MiscMagic);

            if (pos == -1)
            {
                return;
            }

            stream.Seek(pos + MagicStuff.SafeMagic.Length + 4, SeekOrigin.Begin);

            Health = stream.ReadFloat();
            Stasis = stream.ReadFloat();
            Air    = stream.ReadFloat();
            Nodes  = stream.ReadUInt32();
            Unk1   = stream.ReadInt32();
            var activeSuitId = stream.ReadGuid();

            ActiveSuit          = MagicStuff.GetItemDescriptor(activeSuitId, ItemType.Suit);
            UnlockedLogChapters = stream.ReadInt32();
            InventorySlots      = stream.ReadInt32();
            DamageRatio         = stream.ReadFloat();
            Unk3 = stream.ReadInt32();
            stream.Read(Flags, 0, 8);

            stream.Position = origPos;
        }
        public void ReadData(MemoryStream stream)
        {
            var origPos = stream.Position;
            var currPos = stream.SearchForBytePattern(MagicStuff.WeaponMagic);

            if (currPos == -1)
            {
                return;
            }

            Items = new List <WeaponEntity>();

            stream.Seek(currPos + MagicStuff.InventoryMagic.Length, SeekOrigin.Begin);
            var size = stream.ReadInt16() - 8;

            stream.Seek(2, SeekOrigin.Current);
            ActiveSlots = stream.ReadInt32();
            Unk1        = stream.ReadInt32();

            if (size < ItemSize)
            {
                return;
            }
            for (int i = 0; i < size / ItemSize; i++)
            {
                var id       = stream.ReadGuid();
                var slot     = stream.ReadUInt32();
                var quantity = stream.ReadUInt32();
                var desc     = MagicStuff.GetItemDescriptor(id, ItemType.Weapon);

                Items.Add(new WeaponEntity
                {
                    Slot       = slot,
                    Quantity   = quantity,
                    Descriptor = desc
                });
            }

            stream.Position = origPos;
        }
        public void ReadData(MemoryStream stream)
        {
            var origPos = stream.Position;
            var currPos = stream.SearchForBytePattern(MagicStuff.ShopMagic);

            if (currPos == -1)
            {
                return;
            }

            Items = new List <ShopEntity>();

            stream.Seek(currPos + MagicStuff.ShopMagic.Length, SeekOrigin.Begin);
            var size = stream.ReadInt16() - 4;

            stream.Seek(2, SeekOrigin.Current);
            Unk1 = stream.ReadInt32();

            if (size < ItemSize)
            {
                return;
            }
            for (int i = 0; i < size / ItemSize; i++)
            {
                var id   = stream.ReadGuid();
                var unk  = stream.ReadInt32();
                var desc = MagicStuff.GetItemDescriptor(id);

                Items.Add(new ShopEntity
                {
                    Unk1       = unk,
                    Descriptor = desc
                });
            }

            stream.Position = origPos;
        }