Exemplo n.º 1
0
        public void TestContainerContent6017()
        {
            var cont = new Container(Serial.LastItem + 1);

            cont.AddItem(new Item(Serial.LastItem + 2));

            var m = new Mobile(0x1);

            m.DefaultMobileInit();

            var data = new ContainerContent6017(m, cont).Compile();

            Span <byte> expectedData = stackalloc byte[5 + cont.Items.Count * 20];
            var         pos          = 0;

            expectedData.Write(ref pos, (byte)0x3C); // Packet ID
            pos += 4;                                // Length + Count

            ushort count = 0;

            var itemCount = cont.Items.Count;

            for (var i = 0; i < itemCount; i++)
            {
                var child = cont.Items[i];
                if (child.Deleted || !m.CanSee(child))
                {
                    continue;
                }

                expectedData.Write(ref pos, child.Serial);
                expectedData.Write(ref pos, (ushort)child.ItemID);
#if NO_LOCAL_INIT
                expectedData.Write(ref pos, (byte)0); // ItemID offset
#else
                pos++;
#endif
                expectedData.Write(ref pos, (ushort)Math.Min(child.Amount, ushort.MaxValue));
                expectedData.Write(ref pos, (ushort)child.X);
                expectedData.Write(ref pos, (ushort)child.Y);
#if NO_LOCAL_INIT
                expectedData.Write(ref pos, (byte)0); // Grid Location?
#else
                pos++;
#endif
                expectedData.Write(ref pos, cont.Serial);
                expectedData.Write(ref pos, (ushort)(child.QuestItem ? Item.QuestItemHue : child.Hue));

                count++;
            }

            expectedData.Slice(1, 2).Write((ushort)pos); // Length
            expectedData.Slice(3, 2).Write(count);       // Count

            expectedData = expectedData.Slice(0, pos);

            AssertThat.Equal(data, expectedData);
        }
Exemplo n.º 2
0
        public void TestContainerContent6017()
        {
            var cont = new Container(World.NewItem);

            cont.AddItem(new Item(World.NewItem));

            var m = new Mobile(0x1);

            m.DefaultMobileInit();

            var expected = new ContainerContent6017(m, cont).Compile();

            using var ns        = PacketTestUtilities.CreateTestNetState();
            ns.ProtocolChanges |= ProtocolChanges.ContainerGridLines;
            ns.SendContainerContent(m, cont);

            var result = ns.SendPipe.Reader.TryRead();

            AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
        }