using MessagePack; using System.Text.Json.Serialization; namespace SVSim.EmulatedEntrypoint.Models.Dtos; [MessagePackObject] public class PackChildGachaDto { [JsonPropertyName("gacha_id")] [Key("gacha_id")] public int GachaId { get; set; } [JsonPropertyName("type_detail")] [Key("type_detail")] public int TypeDetail { get; set; } [JsonPropertyName("cost")] [Key("cost")] public int Cost { get; set; } [JsonPropertyName("count")] [Key("count")] public int Count { get; set; } = 8; /// Stringified on the wire when present (prod sends "10001" not 10001). [JsonPropertyName("item_id")] [Key("item_id")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? ItemId { get; set; } [JsonPropertyName("item_number")] [Key("item_number")] public int ItemNumber { get; set; } [JsonPropertyName("is_daily_single")] [Key("is_daily_single")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public bool IsDailySingle { get; set; } [JsonPropertyName("override_increase_gacha_point")] [Key("override_increase_gacha_point")] public string OverrideIncreaseGachaPoint { get; set; } = "0"; /// Set on type_detail=10 free children only. Emitted as string on the wire. [JsonPropertyName("campaign_name")] [Key("campaign_name")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? CampaignName { get; set; } /// Lifetime claim cap for this campaign. Stringified on the wire ("1") when present. [JsonPropertyName("purchase_limit_count")] [Key("purchase_limit_count")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? PurchaseLimitCount { get; set; } /// Per-UTC-day claim cap for this campaign. Stringified on the wire ("1") when present. [JsonPropertyName("daily_free_gacha_count")] [Key("daily_free_gacha_count")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? DailyFreeGachaCount { get; set; } /// Campaign id used to scope claim quotas server-side. [JsonPropertyName("free_gacha_campaign_id")] [Key("free_gacha_campaign_id")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public int? FreeGachaCampaignId { get; set; } }