continuity/Wonderking/Packets/Outgoing/CharacterSelectionSetGuildNamePacket.cs

33 lines
923 B
C#
Raw Normal View History

2023-11-21 20:37:50 +00:00
// Copyright (c) 2023 Timothy Schenk. Subject to the GNU AGPL Version 3 License.
2023-11-20 18:58:30 +00:00
using System.Text;
namespace Wonderking.Packets.Outgoing;
[PacketId(OperationCode.CharacterSelectionSetGuildName)]
public class CharacterSelectionSetGuildNamePacket : IPacket
{
public required string[] GuildNames { get; set; }
public void Deserialize(byte[] data)
{
throw new NotSupportedException();
}
public byte[] Serialize()
{
2023-11-19 16:07:28 +00:00
Span<byte> data = stackalloc byte[1 + (1 + 16 + 1) * GuildNames.Length];
data.Clear();
2023-11-19 16:07:28 +00:00
data[0] = (byte)GuildNames.Length;
for (var i = 0; i < GuildNames.Length; i++)
{
2023-11-19 16:07:28 +00:00
data[1 + i * (1 + 16 + 1)] = (byte)i;
Encoding.ASCII.GetBytes(GuildNames[i], data.Slice(2 + i * (1 + 16 + 1), 16));
// Null terminator
2023-11-19 16:07:28 +00:00
data[18 + i * (1 + 16 + 1)] = 0;
}
return data.ToArray();
}
}