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); }
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); }