1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-05-29 01:34:04 +02:00
Minecraft-Phantom-Panel/Common/Phantom.Common.Messages/ToServer/SimpleReplyMessage.cs

23 lines
763 B
C#

using System.Runtime.CompilerServices;
using MemoryPack;
namespace Phantom.Common.Messages.ToServer;
[MemoryPackable]
public sealed partial record SimpleReplyMessage(
[property: MemoryPackOrder(0)] uint SequenceId,
[property: MemoryPackOrder(1)] int EnumValue
) : IMessageToServer {
public static SimpleReplyMessage FromEnum<TEnum>(uint sequenceId, TEnum enumValue) where TEnum : Enum {
if (Unsafe.SizeOf<TEnum>() != Unsafe.SizeOf<int>()) {
throw new ArgumentException("Enum type " + typeof(TEnum).Name + " is not compatible with int.", nameof(TEnum));
}
return new SimpleReplyMessage(sequenceId, Unsafe.As<TEnum, int>(ref enumValue));
}
public Task Accept(IMessageToServerListener listener) {
return listener.HandleSimpleReply(this);
}
}