using System.Text.Json.Serialization; using MessagePack; using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; namespace SVSim.EmulatedEntrypoint.Models.Dtos.Requests.Pack; /// /// Inbound /pack/open body. Accepts ALL three client-side overloads in one DTO — fields /// for Starter (class_id) and Skin (target_card_id) are nullable so we can /// reject those overloads in the controller without a custom binder. /// See Wizard/PackOpenTask.cs for the three SetParameter variants. /// [MessagePackObject] public class PackOpenRequest : BaseRequest { [JsonPropertyName("parent_gacha_id")] [Key("parent_gacha_id")] public int ParentGachaId { get; set; } [JsonPropertyName("gacha_id")] [Key("gacha_id")] public int GachaId { get; set; } [JsonPropertyName("gacha_type")] [Key("gacha_type")] public int GachaType { get; set; } [JsonPropertyName("pack_number")] [Key("pack_number")] public int PackNumber { get; set; } [JsonPropertyName("exclude_card_ids")] [Key("exclude_card_ids")] public long[] ExcludeCardIds { get; set; } = Array.Empty(); [JsonPropertyName("class_id")] [Key("class_id")] public int? ClassId { get; set; } [JsonPropertyName("target_card_id")] [Key("target_card_id")] public long? TargetCardId { get; set; } }