From 4b2e4fbd366ecc97cb99b57ffba40c7c67620f8b Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:19:21 -0800 Subject: [PATCH] fix(core): Adds object help response packets (#336) --- ...{MessageTests.cs => MessagePacketTests.cs} | 15 +++++++++ .../Packets/Outgoing/MessagePackets.cs | 11 +++++++ .../Outgoing/ObjectHelpResponseTests.cs | 31 ------------------- .../Packets/ObjectHelpResponsePackets.cs | 28 ----------------- .../Network/Packets/OutgoingMessagePackets.cs | 18 +++++++++++ 5 files changed, 44 insertions(+), 59 deletions(-) rename Projects/Server.Tests/Tests/Network/Packets/Outgoing/{MessageTests.cs => MessagePacketTests.cs} (92%) delete mode 100644 Projects/Server.Tests/Tests/Network/Packets/Outgoing/ObjectHelpResponseTests.cs delete mode 100644 Projects/Server/Network/Packets/ObjectHelpResponsePackets.cs diff --git a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessageTests.cs b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePacketTests.cs similarity index 92% rename from Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessageTests.cs rename to Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePacketTests.cs index 6e1ad12d6..b5ecde306 100644 --- a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessageTests.cs +++ b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePacketTests.cs @@ -184,6 +184,21 @@ namespace Server.Tests.Network AssertThat.Equal(result.Buffer[0].AsSpan(0), expected); } + [Fact] + public void TestObjectHelpResponse() + { + Serial s = 0x100; + var text = "This is some testing text"; + + var expected = new ObjectHelpResponse(s, text).Compile(); + + using var ns = PacketTestUtilities.CreateTestNetState(); + ns.SendHelpResponse(s, text); + + var result = ns.SendPipe.Reader.TryRead(); + AssertThat.Equal(result.Buffer[0].AsSpan(0), expected); + } + internal class TestPrompt : Prompt { } diff --git a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePackets.cs b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePackets.cs index dc90a0ba3..0447cbb4b 100644 --- a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePackets.cs +++ b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/MessagePackets.cs @@ -141,4 +141,15 @@ namespace Server.Network Stream.Write((short)0); } } + + public sealed class ObjectHelpResponse : Packet + { + public ObjectHelpResponse(Serial e, string text) : base(0xB7) + { + EnsureCapacity(9 + text.Length * 2); + + Stream.Write(e); + Stream.WriteBigUniNull(text); + } + } } diff --git a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/ObjectHelpResponseTests.cs b/Projects/Server.Tests/Tests/Network/Packets/Outgoing/ObjectHelpResponseTests.cs deleted file mode 100644 index c44666d2e..000000000 --- a/Projects/Server.Tests/Tests/Network/Packets/Outgoing/ObjectHelpResponseTests.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Buffers; -using Server.Network; -using Xunit; - -namespace Server.Tests.Network -{ - public class ObjectHelpResponseTests - { - [Fact] - public void TestObjectHelpResponse() - { - Serial s = 0x100; - var text = "This is some testing text"; - - var data = new ObjectHelpResponse(s, text).Compile(); - - var length = 9 + text.Length * 2; - - Span expectedData = stackalloc byte[length]; - var pos = 0; - - expectedData.Write(ref pos, (byte)0xB7); // Packet ID - expectedData.Write(ref pos, (ushort)length); // Length - expectedData.Write(ref pos, s); - expectedData.WriteBigUniNull(ref pos, text); - - AssertThat.Equal(data, expectedData); - } - } -} diff --git a/Projects/Server/Network/Packets/ObjectHelpResponsePackets.cs b/Projects/Server/Network/Packets/ObjectHelpResponsePackets.cs deleted file mode 100644 index 492056675..000000000 --- a/Projects/Server/Network/Packets/ObjectHelpResponsePackets.cs +++ /dev/null @@ -1,28 +0,0 @@ -/************************************************************************* - * ModernUO * - * Copyright 2019-2020 - ModernUO Development Team * - * Email: hi@modernuo.com * - * File: ObjectHelpResponsePackets.cs * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 3 of the License, or * - * (at your option) any later version. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see . * - *************************************************************************/ - -namespace Server.Network -{ - public sealed class ObjectHelpResponse : Packet - { - public ObjectHelpResponse(Serial e, string text) : base(0xB7) - { - EnsureCapacity(9 + text.Length * 2); - - Stream.Write(e); - Stream.WriteBigUniNull(text); - } - } -} diff --git a/Projects/Server/Network/Packets/OutgoingMessagePackets.cs b/Projects/Server/Network/Packets/OutgoingMessagePackets.cs index 0573e6beb..c34d1ace7 100644 --- a/Projects/Server/Network/Packets/OutgoingMessagePackets.cs +++ b/Projects/Server/Network/Packets/OutgoingMessagePackets.cs @@ -249,5 +249,23 @@ namespace Server.Network ns.Send(ref buffer, writer.Position); } + + public static void SendHelpResponse(this NetState ns, Serial s, string text) + { + text = text?.Trim() ?? ""; + + if (ns == null || text.Length == 0 || !ns.GetSendBuffer(out var buffer)) + { + return; + } + + var writer = new CircularBufferWriter(buffer); + writer.Write((byte)0xB7); + writer.Write((ushort)(9 + text.Length * 2)); + writer.Write(s); + writer.WriteBigUniNull(text); + + ns.Send(ref buffer, writer.Position); + } } }