40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
namespace ChatRoom.Centralized.Shared.Packets;
|
|
|
|
public class ClientRequestUserInfoPacket : INetworkPacket<ClientRequestUserInfoPacket>
|
|
{
|
|
public static string Signature => "CRUI";
|
|
|
|
public required Guid? UserId { get; set; }
|
|
public required string? Username { get; set; }
|
|
|
|
public void WriteData(BinaryWriter writer)
|
|
{
|
|
if (UserId.HasValue)
|
|
{
|
|
writer.Write(true);
|
|
writer.Write(UserId.Value.ToByteArray());
|
|
if (Username is not null) throw new("Cannot have both username and ID.");
|
|
}
|
|
else if (Username is not null)
|
|
{
|
|
writer.Write(false);
|
|
writer.Write(Username);
|
|
}
|
|
else throw new("Either a username or an ID must be provided.");
|
|
}
|
|
public static ClientRequestUserInfoPacket ReadData(BinaryReader reader)
|
|
{
|
|
bool useGuid = reader.ReadBoolean();
|
|
if (useGuid) return new()
|
|
{
|
|
UserId = new(reader.ReadBytes(16)),
|
|
Username = null
|
|
};
|
|
else return new()
|
|
{
|
|
UserId = null,
|
|
Username = reader.ReadString()
|
|
};
|
|
}
|
|
}
|