fix: Fixes expansion flags for animations (#1009)

This commit is contained in:
Kamron Batman 2022-05-01 18:35:42 -07:00 • committed by GitHub
parent d1a3c9b0c7
commit 8f1240d25e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 80 deletions

View file

@ -100,16 +100,17 @@ namespace Server.Json
{
writer.WriteStartObject();
var underlyingType = Enum.GetUnderlyingType(typeof(T));
var size = GetUnderlyingTypeLength(Type.GetTypeCode(underlyingType)) - 1;
var intValue = ConvertToUInt64(underlyingType, value);
foreach (var flagName in Enum.GetNames(typeof(T)))
{
var flagValue = Enum.Parse<T>(flagName, false);
var flag = ConvertToUInt64(underlyingType, flagValue);
if (flag == 0 || (flag & size) == 0)
// Do not write out multi-bit values. This is a custom behavior
if (flag > 0 && (flag & (flag - 1)) == 0)
{
writer.WriteBoolean(flagName, (intValue & flag) != 0);
writer.WriteBoolean(flagName, (intValue & flag) == flag);
}
}