diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs index 7fa6c9df..29be9361 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Item.cs @@ -670,17 +670,11 @@ public record UpdDogtag } [JsonPropertyName("Side")] - public object? Side + [JsonConverter(typeof(DogtagSideConverter))] + public DogtagSide? Side { - get - { - return _side; - } - set - { - Console.WriteLine($"Side: {value}"); - _side = value; - } + get; + set; } [JsonPropertyName("Level")] diff --git a/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs b/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs new file mode 100644 index 00000000..d94e0717 --- /dev/null +++ b/Libraries/SPTarkov.Server.Core/Models/Enums/DogtagSide.cs @@ -0,0 +1,12 @@ +namespace SPTarkov.Server.Core.Models.Enums; + +public enum DogtagSide +{ + /// + /// This is for the dogtag equipped by the player, which shows up as 0 (integer) on the profile json. + /// + NotApplicable, + + Usec, + Bear +} diff --git a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs new file mode 100644 index 00000000..b7b2b4ae --- /dev/null +++ b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/DogtagSideConverter.cs @@ -0,0 +1,33 @@ +using System.Text.Json; +using System.Text.Json.Serialization; +using SPTarkov.Server.Core.Models.Enums; + +namespace SPTarkov.Server.Core.Utils.Json.Converters; + +public class DogtagSideConverter : JsonConverter +{ + public override DogtagSide Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.Number) + { + return DogtagSide.NotApplicable; + } + + var value = reader.GetString(); + return value != null ? Enum.Parse(value) : DogtagSide.NotApplicable; + } + + public override void Write(Utf8JsonWriter writer, DogtagSide value, JsonSerializerOptions options) + { + switch (value) + { + case DogtagSide.NotApplicable: + writer.WriteNumberValue(0); + break; + case DogtagSide.Usec: + case DogtagSide.Bear: + writer.WriteStringValue(value.ToString()); + break; + } + } +}