Exemple #1
0
        public void TestVendorSellList()
        {
            var vendor = new Mobile(0x1024u);

            vendor.DefaultMobileInit();

            var item1 = new Item(World.NewItem);
            var item2 = new Item(World.NewItem)
            {
                Name = "Second Item"
            };
            var item3 = new Item(World.NewItem);

            var sellStates = new List <SellItemState>
            {
                new(item1, 100, "Item 1"),
                new(item2, 100000, "Item 2"),
                new(item3, 1, "Item 3")
            };

            var expected = new VendorSellList(vendor, sellStates).Compile();

            var ns = PacketTestUtilities.CreateTestNetState();

            ns.SendVendorSellList(vendor.Serial, sellStates);

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

            AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
        }
Exemple #2
0
        public void TestVendorSellList()
        {
            var vendor = new Mobile(0x1);

            vendor.DefaultMobileInit();

            var item1 = new Item(World.NewItem);
            var item2 = new Item(World.NewItem)
            {
                Name = "Second Item"
            };
            var item3 = new Item(World.NewItem);

            var sellStates = new List <SellItemState>
            {
                new(item1, 100, "Item 1"),
                new(item2, 100000, "Item 2"),
                new(item3, 1, "Item 3")
            };

            var data = new VendorSellList(vendor, sellStates).Compile();

            var length = 9 + 14 * 3 + sellStates.Sum(
                state =>
                (string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim()).Length
                );

            Span <byte> expectedData = stackalloc byte[length];
            var         pos          = 0;

            expectedData.Write(ref pos, (byte)0x9E); // Packet ID
            expectedData.Write(ref pos, (ushort)length);
            expectedData.Write(ref pos, vendor.Serial);
            expectedData.Write(ref pos, (ushort)sellStates.Count);

            for (var i = 0; i < sellStates.Count; i++)
            {
                var state = sellStates[i];
                expectedData.Write(ref pos, state.Item.Serial);
                expectedData.Write(ref pos, (ushort)state.Item.ItemID);
                expectedData.Write(ref pos, (ushort)state.Item.Hue);
                expectedData.Write(ref pos, (ushort)state.Item.Amount);
                expectedData.Write(ref pos, (ushort)state.Price);
                var name = string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim();
                expectedData.Write(ref pos, (ushort)name.Length);
                expectedData.WriteAscii(ref pos, name);
            }

            AssertThat.Equal(data, expectedData);
        }
        public void TestVendorSellList()
        {
            var vendor = new Mobile(0x1);

            vendor.DefaultMobileInit();

            var item1 = new Item(Serial.LastItem + 1);
            var item2 = new Item(Serial.LastItem + 2)
            {
                Name = "Second Item"
            };
            var item3 = new Item(Serial.LastItem + 3);

            var sellStates = new List <SellItemState>
            {
                new SellItemState(item1, 100, "Item 1"),
                new SellItemState(item2, 100000, "Item 2"),
                new SellItemState(item3, 1, "Item 3")
            };

            Span <byte> data = new VendorSellList(vendor, sellStates).Compile();

            int length = 9 + 14 * 3 + sellStates.Sum(state =>
                                                     (string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim()).Length
                                                     );

            Span <byte> expectedData = stackalloc byte[length];

            int pos = 0;

            expectedData[pos++] = 0x9E; // Packet ID
            ((ushort)length).CopyTo(ref pos, expectedData);
            vendor.Serial.CopyTo(ref pos, expectedData);
            ((ushort)sellStates.Count).CopyTo(ref pos, expectedData);

            for (int i = 0; i < sellStates.Count; i++)
            {
                SellItemState state = sellStates[i];
                state.Item.Serial.CopyTo(ref pos, expectedData);
                ((ushort)state.Item.ItemID).CopyTo(ref pos, expectedData);
                ((ushort)state.Item.Hue).CopyTo(ref pos, expectedData);
                ((ushort)state.Item.Amount).CopyTo(ref pos, expectedData);
                ((ushort)state.Price).CopyTo(ref pos, expectedData);
                string name = string.IsNullOrWhiteSpace(state.Item.Name) ? state.Name ?? "" : state.Item.Name.Trim();
                ((ushort)name.Length).CopyTo(ref pos, expectedData);
                name.CopyASCIITo(ref pos, expectedData);
            }

            AssertThat.Equal(data, expectedData);
        }