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()
    {
        Span<byte> data = stackalloc byte[1 + (1 + 16 + 1) * this.GuildNames.Length];
        data.Clear();
        data[0] = (byte)this.GuildNames.Length;
        for (var i = 0; i < this.GuildNames.Length; i++)
        {
            data[1 + (i * (1 + 16 + 1))] = (byte)i;
            Encoding.ASCII.GetBytes(this.GuildNames[i], data.Slice(2 + (i * (1 + 16 + 1)), 16));
            // Null terminator
            data[18 + (i * (1 + 16 + 1))] = 0;
        }

        return data.ToArray();
    }
}