using System.Text.Json.Serialization; namespace SVSim.Bootstrap.Models.Seed; /// /// Mirrors seeds/rotation-config.json. Drives the Rotation GameConfigSection. /// Note: rotation_card_set_ids is the rotation CardSet flag list — consumed by /// RotationFlagUpdater in Stage 9C, not by RotationConfigImporter. /// public sealed class RotationConfigSeed { [JsonPropertyName("ts_rotation_id")] public string TsRotationId { get; set; } = ""; [JsonPropertyName("is_battle_pass_period")] public bool IsBattlePassPeriod { get; set; } [JsonPropertyName("is_beginner_mission")] public bool IsBeginnerMission { get; set; } [JsonPropertyName("card_set_id_for_resource_dl_view")] public int CardSetIdForResourceDlView { get; set; } [JsonPropertyName("rotation_card_set_ids")] public List RotationCardSetIds { get; set; } = new(); } /// Mirrors seeds/challenge-config.json. Drives the Challenge GameConfigSection. public sealed class ChallengeConfigSeed { [JsonPropertyName("use_two_pick_premium_card")] public bool UseTwoPickPremiumCard { get; set; } [JsonPropertyName("two_pick_sleeve_id")] public long TwoPickSleeveId { get; set; } } /// /// Mirrors seeds/my-rotation-schedule.json. Drives the MyRotationSchedule /// GameConfigSection. The extractor pre-joins gathering and free_battle /// from my_rotation_info.schedules into two top-level fields. /// public sealed class MyRotationScheduleSeed { [JsonPropertyName("gathering")] public ScheduleWindowSeed? Gathering { get; set; } [JsonPropertyName("free_battle")] public ScheduleWindowSeed? FreeBattle { get; set; } } public sealed class ScheduleWindowSeed { [JsonPropertyName("begin")] public string Begin { get; set; } = ""; [JsonPropertyName("end")] public string End { get; set; } = ""; }