using MessagePack; using System.Text.Json.Serialization; namespace SVSim.EmulatedEntrypoint.Models.Dtos; /// /// One of the eight "starter" decks (one per class), as surfaced under /// /deck/info data.default_deck_list. Wire shape derived from 2026-05-23 prod capture. /// Used by the client both as new-account defaults and as the source for "use default deck". /// [MessagePackObject] public class DefaultDeck { [JsonPropertyName("deck_no")] [Key("deck_no")] public int DeckNo { get; set; } [JsonPropertyName("class_id")] [Key("class_id")] public int ClassId { get; set; } [JsonPropertyName("sleeve_id")] [Key("sleeve_id")] public long SleeveId { get; set; } [JsonPropertyName("leader_skin_id")] [Key("leader_skin_id")] public int LeaderSkinId { get; set; } [JsonPropertyName("deck_name")] [Key("deck_name")] public string DeckName { get; set; } = string.Empty; /// 40 card_id values — same card may repeat (max 3 per card per Shadowverse rules). [JsonPropertyName("card_id_array")] [Key("card_id_array")] public List CardIdArray { get; set; } = new(); /// 0/1. Client reads via GetJsonBool(default true) in DeckData.Initialize. Prod always sends 1 for the 8 starter decks. [JsonPropertyName("is_complete_deck")] [Key("is_complete_deck")] public int IsCompleteDeck { get; set; } = 1; /// 0/1. Read by downstream deck-edit UI (not by DeckData.Initialize itself). Prod always sends 1. [JsonPropertyName("is_available_deck")] [Key("is_available_deck")] public int IsAvailableDeck { get; set; } = 1; /// Card ids currently under maintenance (disabled). Empty for the 8 starter decks in prod. [JsonPropertyName("maintenance_card_ids")] [Key("maintenance_card_ids")] public List MaintenanceCardIds { get; set; } = new(); }