feat: Customize expansion and set maps on first boot (#1425)

This commit is contained in:
mdodkins 2023-08-01 04:46:49 +01:00 • committed by GitHub
parent 3ffe049e08
commit a9a2a89908
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
45 changed files with 700 additions and 269 deletions

View file

@ -17,28 +17,27 @@ using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Server.Json
{
public class TextDefinitionConverter : JsonConverter<TextDefinition>
{
public override TextDefinition Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
reader.TokenType switch
{
JsonTokenType.String => TextDefinition.Of(reader.GetString()),
JsonTokenType.Number => TextDefinition.Of(reader.GetInt32()),
_ => throw new JsonException("TextDefinition value must be an integer or string")
};
namespace Server.Json;
public override void Write(Utf8JsonWriter writer, TextDefinition value, JsonSerializerOptions options)
public class TextDefinitionConverter : JsonConverter<TextDefinition>
{
public override TextDefinition Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
reader.TokenType switch
{
if (value.Number > 0)
{
writer.WriteNumberValue(value.Number);
}
else
{
writer.WriteStringValue(value.String);
}
JsonTokenType.String => TextDefinition.Of(reader.GetString()),
JsonTokenType.Number => TextDefinition.Of(reader.GetInt32()),
_ => throw new JsonException("TextDefinition value must be an integer or string")
};
public override void Write(Utf8JsonWriter writer, TextDefinition value, JsonSerializerOptions options)
{
if (value.Number > 0)
{
writer.WriteNumberValue(value.Number);
}
else
{
writer.WriteStringValue(value.String);
}
}
}
}

View file

@ -17,13 +17,12 @@ using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Server.Json
{
public class TextDefinitionConverterFactory : JsonConverterFactory
{
public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(TextDefinition);
namespace Server.Json;
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) =>
new TextDefinitionConverter();
}
}
public class TextDefinitionConverterFactory : JsonConverterFactory
{
public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(TextDefinition);
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) =>
new TextDefinitionConverter();
}