Fix EntryRequirement serialization

This commit is contained in:
2025-03-02 14:33:05 -06:00
parent 085433e108
commit a3fbefe888
6 changed files with 27 additions and 13 deletions

View File

@@ -6,5 +6,7 @@ ALttPRandomizer/[Bb]in
*/__pycache__ */__pycache__
*/.github */.github
*/_vendor */_vendor
ALttPDoorRandomizer/DR_* */DR_*
ALttPDoorRandomizer/data/base2current.json */ER_*
*/OR_*
*/data/base2current.json

View File

@@ -5,10 +5,11 @@
public static class JsonOptions { public static class JsonOptions {
public static JsonSerializerOptions Default = new JsonSerializerOptions() { public static JsonSerializerOptions Default = new JsonSerializerOptions() {
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
NumberHandling = JsonNumberHandling.Strict,
}.WithStringEnum(); }.WithStringEnum();
public static JsonSerializerOptions WithStringEnum(this JsonSerializerOptions options) { public static JsonSerializerOptions WithStringEnum(this JsonSerializerOptions options) {
options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseLower)); options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseLower, false));
return options; return options;
} }
} }

View File

@@ -16,6 +16,7 @@
public EntryRequirement CrystalsGanon { get; set; } = EntryRequirement.Crystals7; public EntryRequirement CrystalsGanon { get; set; } = EntryRequirement.Crystals7;
[CommonValue("crystals_gt")] [CommonValue("crystals_gt")]
[JsonPropertyName("crystals_gt")]
public EntryRequirement CrystalsGT { get; set; } = EntryRequirement.Crystals7; public EntryRequirement CrystalsGT { get; set; } = EntryRequirement.Crystals7;
public EntranceShuffle EntranceShuffle { get; set; } = EntranceShuffle.Vanilla; public EntranceShuffle EntranceShuffle { get; set; } = EntranceShuffle.Vanilla;
@@ -73,14 +74,14 @@
} }
public enum EntryRequirement { public enum EntryRequirement {
[JsonStringEnumMemberName("7")] [CommonValue("7")] Crystals7, [JsonStringEnumMemberName("0")] [CommonValue("0")] Crystals0 = 0,
[JsonStringEnumMemberName("6")] [CommonValue("6")] Crystals6, [JsonStringEnumMemberName("1")] [CommonValue("1")] Crystals1 = 1,
[JsonStringEnumMemberName("5")] [CommonValue("5")] Crystals5, [JsonStringEnumMemberName("2")] [CommonValue("2")] Crystals2 = 2,
[JsonStringEnumMemberName("4")] [CommonValue("4")] Crystals4, [JsonStringEnumMemberName("3")] [CommonValue("3")] Crystals3 = 3,
[JsonStringEnumMemberName("3")] [CommonValue("3")] Crystals3, [JsonStringEnumMemberName("4")] [CommonValue("4")] Crystals4 = 4,
[JsonStringEnumMemberName("2")] [CommonValue("2")] Crystals2, [JsonStringEnumMemberName("5")] [CommonValue("5")] Crystals5 = 5,
[JsonStringEnumMemberName("1")] [CommonValue("1")] Crystals1, [JsonStringEnumMemberName("6")] [CommonValue("6")] Crystals6 = 6,
[JsonStringEnumMemberName("0")] [CommonValue("0")] Crystals0, [JsonStringEnumMemberName("7")] [CommonValue("7")] Crystals7 = 7,
Random, Random,
} }

View File

@@ -26,7 +26,9 @@
builder.Services.Configure<ServiceOptions>(builder.Configuration.GetSection("ALttPRandomizer")); builder.Services.Configure<ServiceOptions>(builder.Configuration.GetSection("ALttPRandomizer"));
builder.Services.AddLogging(lb => lb.AddConsole()); builder.Services.AddLogging(logger => {
logger.AddConsole();
});
var provider = builder.Services.BuildServiceProvider(); var provider = builder.Services.BuildServiceProvider();
var settings = provider.GetRequiredService<IOptionsMonitor<ServiceOptions>>().CurrentValue!; var settings = provider.GetRequiredService<IOptionsMonitor<ServiceOptions>>().CurrentValue!;

View File

@@ -59,6 +59,9 @@
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(settings.Weapons)); this.AddArgs(args, this.SettingsProcessor.GetSettingPair(settings.Weapons));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(settings.Goal)); this.AddArgs(args, this.SettingsProcessor.GetSettingPair(settings.Goal));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.CrystalsGanon), settings.CrystalsGanon));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.CrystalsGT), settings.CrystalsGT));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.SmallKeys), settings.SmallKeys)); this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.SmallKeys), settings.SmallKeys));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.BigKeys), settings.BigKeys)); this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.BigKeys), settings.BigKeys));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.Maps), settings.Maps)); this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.Maps), settings.Maps));

View File

@@ -1,17 +1,22 @@
using ALttPRandomizer.Model; using ALttPRandomizer.Model;
using Microsoft.Extensions.Logging;
namespace ALttPRandomizer.Service { namespace ALttPRandomizer.Service {
public class RandomizeService { public class RandomizeService {
public RandomizeService(IdGenerator idGenerator, Randomizer randomizer) { public RandomizeService(IdGenerator idGenerator, Randomizer randomizer, ILogger<RandomizeService> logger) {
this.IdGenerator = idGenerator; this.IdGenerator = idGenerator;
this.Randomizer = randomizer; this.Randomizer = randomizer;
this.Logger = logger;
} }
private ILogger<RandomizeService> Logger { get; }
private IdGenerator IdGenerator { get; } private IdGenerator IdGenerator { get; }
private Randomizer Randomizer { get; } private Randomizer Randomizer { get; }
public string RandomizeSeed(SeedSettings settings) { public string RandomizeSeed(SeedSettings settings) {
var id = this.IdGenerator.GenerateId(); var id = this.IdGenerator.GenerateId();
this.Logger.LogInformation("Generating seed {seedId} with settings {@settings}", id, settings);
this.Randomizer.Randomize(id, settings); this.Randomizer.Randomize(id, settings);
return id; return id;
} }