fix(core): Removes byte indicator for Enum (#614)

This commit is contained in:
Kamron Batman 2021-05-24 01:14:10 -07:00 • committed by GitHub
parent ca5a06e9a2
commit c3f414f04f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 8 deletions

View file

@ -70,7 +70,7 @@ namespace Server
int Read(Span<byte> buffer); int Read(Span<byte> buffer);
unsafe T ReadEnum<T>() where T : unmanaged, Enum unsafe T ReadEnum<T>() where T : unmanaged, Enum
{ {
switch (ReadByte()) switch (sizeof(T))
{ {
case 1: case 1:
{ {

View file

@ -118,32 +118,26 @@ namespace Server
void Write(ReadOnlySpan<byte> bytes); void Write(ReadOnlySpan<byte> bytes);
unsafe void WriteEnum<T>(T value) where T : unmanaged, Enum unsafe void WriteEnum<T>(T value) where T : unmanaged, Enum
{ {
var size = sizeof(T); switch (sizeof(T))
switch (size)
{ {
default: throw new ArgumentException($"Argument of type {typeof(T)} is not a normal enum"); default: throw new ArgumentException($"Argument of type {typeof(T)} is not a normal enum");
case 1: case 1:
{ {
Write((byte)1);
Write(*(byte*)&value); Write(*(byte*)&value);
break; break;
} }
case 2: case 2:
{ {
Write((byte)2);
Write(*(ushort*)&value); Write(*(ushort*)&value);
break; break;
} }
case 4: case 4:
{ {
Write((byte)3);
WriteEncodedInt(*(int*)&value); WriteEncodedInt(*(int*)&value);
break; break;
} }
case 8: case 8:
{ {
Write((byte)4);
Write(*(ulong*)&value); Write(*(ulong*)&value);
break; break;
} }