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__
*/.github
*/_vendor
ALttPDoorRandomizer/DR_*
ALttPDoorRandomizer/data/base2current.json
*/DR_*
*/ER_*
*/OR_*
*/data/base2current.json

View File

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

View File

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

View File

@@ -26,7 +26,9 @@
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 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.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.BigKeys), settings.BigKeys));
this.AddArgs(args, this.SettingsProcessor.GetSettingPair(nameof(SeedSettings.Maps), settings.Maps));

View File

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