diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/Common/TrialDeck.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/Common/TrialDeck.cs new file mode 100644 index 0000000..9e8ddcb --- /dev/null +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/Common/TrialDeck.cs @@ -0,0 +1,27 @@ +using MessagePack; +using System.Text.Json.Serialization; + +namespace SVSim.EmulatedEntrypoint.Models.Dtos.Common; + +/// +/// One archetype trial deck under trial_deck_list (DeckAttributeType.TrialDeck). Wire shape +/// from the 2026-05-29 main_story/get_deck_list capture. Distinct from build decks: carries +/// deck_format and no order_num/leader-skin-list. card_id_array only (no numbered card_id_N). +/// +[MessagePackObject] +public class TrialDeck +{ + [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 int 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; + [JsonPropertyName("card_id_array")] [Key("card_id_array")] public List CardIdArray { get; set; } = new(); + [JsonPropertyName("is_complete_deck")] [Key("is_complete_deck")] public int IsCompleteDeck { get; set; } = 1; + [JsonPropertyName("restricted_card_exists")] [Key("restricted_card_exists")] public bool RestrictedCardExists { get; set; } + [JsonPropertyName("is_available_deck")] [Key("is_available_deck")] public int IsAvailableDeck { get; set; } = 1; + [JsonPropertyName("maintenance_card_ids")] [Key("maintenance_card_ids")] public List MaintenanceCardIds { get; set; } = new(); + [JsonPropertyName("is_include_un_possession_card")] [Key("is_include_un_possession_card")] public bool IsIncludeUnPossessionCard { get; set; } + [JsonPropertyName("deck_format")] [Key("deck_format")] public int DeckFormat { get; set; } + [JsonPropertyName("is_recommend")] [Key("is_recommend")] public int IsRecommend { get; set; } +} diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/Story/GetDeckListDtos.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/Story/GetDeckListDtos.cs index 37a4b20..1638351 100644 --- a/SVSim.EmulatedEntrypoint/Models/Dtos/Story/GetDeckListDtos.cs +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/Story/GetDeckListDtos.cs @@ -1,5 +1,7 @@ using MessagePack; using System.Text.Json.Serialization; +using SVSim.EmulatedEntrypoint.Models.Dtos; +using SVSim.EmulatedEntrypoint.Models.Dtos.Common; using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story; @@ -30,10 +32,36 @@ public class GetDeckListResponse [JsonPropertyName("build_deck_list")] [Key("build_deck_list")] public List BuildDeckList { get; set; } = new(); + + [JsonPropertyName("trial_deck_list")] + [Key("trial_deck_list")] + public List TrialDeckList { get; set; } = new(); + + /// Global starter decks, keyed by deck_no string (prod ids 91-98, one per class). + [JsonPropertyName("default_deck_list")] + [Key("default_deck_list")] + public Dictionary DefaultDeckList { get; set; } = new(); } +/// +/// One named prebuilt story deck under build_deck_list (DeckAttributeType.BuildDeck). Wire +/// shape from the 2026-05-29 capture. Emits card_id_array only — the numbered card_id_1..40 keys +/// prod also sends are omitted (default/trial entries omit them and parse fine). +/// [MessagePackObject] public class BuildDeck { - // Placeholder — build decks return [] for v1 per spec. + [JsonPropertyName("deck_no")] [Key("deck_no")] public int DeckNo { get; set; } + [JsonPropertyName("order_num")] [Key("order_num")] public int OrderNum { get; set; } + [JsonPropertyName("class_id")] [Key("class_id")] public int ClassId { get; set; } + [JsonPropertyName("sleeve_id")] [Key("sleeve_id")] public int SleeveId { get; set; } + [JsonPropertyName("leader_skin_id")] [Key("leader_skin_id")] public int LeaderSkinId { get; set; } + [JsonPropertyName("entry_no")] [Key("entry_no")] public int EntryNo { get; set; } + [JsonPropertyName("create_deck_time")] [Key("create_deck_time")] public DateTime? CreateDeckTime { get; set; } + [JsonPropertyName("deck_name")] [Key("deck_name")] public string DeckName { get; set; } = string.Empty; + [JsonPropertyName("card_id_array")] [Key("card_id_array")] public List CardIdArray { get; set; } = new(); + [JsonPropertyName("is_complete_deck")] [Key("is_complete_deck")] public int IsCompleteDeck { get; set; } = 1; + [JsonPropertyName("is_available_deck")] [Key("is_available_deck")] public int IsAvailableDeck { get; set; } = 1; + [JsonPropertyName("maintenance_card_ids")] [Key("maintenance_card_ids")] public List MaintenanceCardIds { get; set; } = new(); + [JsonPropertyName("is_recommend")] [Key("is_recommend")] public int IsRecommend { get; set; } }