public void Can_deserialize()
        {
            var rawPacket = FakePackets.Instantiate(new byte[]
            {
                0x25,                   // packet
                0x40, 0x06, 0x40, 0x87, // object id
                0x1B, 0xDD,             // object type
                0x00,                   // item id offset?
                0x00, 0x02,             // amount
                0x00, 0x72,             // xloc
                0x00, 0x74,             // yloc
                0x40, 0x02, 0x43, 0x33, // container id
                0x00, 0x00,             // color
            });

            var packet = new AddItemToContainerPacket();

            packet.Deserialize(rawPacket);

            packet.ItemId.Should().Be(new ObjectId(0x40064087));
            packet.Type.Should().Be((ModelId)0x1BDD);
            packet.Amount.Should().Be(2);
            packet.Location.X.Should().Be(0x72);
            packet.Location.Y.Should().Be(0x74);
            packet.ContainerId.Should().Be(new ObjectId(0x40024333));
            packet.Color.Should().Be((Color)0);
        }
Пример #2
0
 private void HandleAddItemToContainer(AddItemToContainerPacket packet)
 {
     if (gameObjects.TryGet(packet.ItemId, out GameObject existingObject) && existingObject is Item existingItem)
     {
         gameObjects.UpdateObject(existingItem.Update(packet.Type, packet.Amount, (Location3D)packet.Location,
                                                      packet.Color,
                                                      packet.ContainerId, null));
     }
     else
     {
         var item = new Item(packet.ItemId, packet.Type, packet.Amount, (Location3D)packet.Location,
                             packet.Color, packet.ContainerId, null);
         gameObjects.AddObject(item);
         OnItemEnteredView(item);
     }
 }