using System.Text.Json.Serialization; using MessagePack; namespace SVSim.EmulatedEntrypoint.Models.Dtos.ArenaColosseum; /// /// Round-level Colosseum descriptor. Shared by /top and /get_fee_info via /// the client's static ColosseumEntryInfoTask.SetColosseumInfo helper. When /// is false, the client skips parsing every other /// field — server still emits this minimal payload so the lobby renders cleanly. /// /// Also drives /mypage/index data.colosseum_info — the home-screen tab gating and /// the per-endpoint lobby reads share one source of truth (the /// POCO) projected via /// . /event_info uses a different, /// event-level shape — . /// /// [MessagePackObject] public class ColosseumLobbyInfo { /// Master gate. false = lobby renders empty. [JsonPropertyName("is_colosseum_period")] [Key("is_colosseum_period")] public bool IsColosseumPeriod { get; set; } /// Format enum (Rotation=0, Unlimited=1, TwoPick=10, HOF=31, ...). [JsonPropertyName("deck_format")] [Key("deck_format")] public int? DeckFormat { get; set; } /// STRING wire shape: "0"/"1". Client parses with /// jsonData.ToString() == "1". [JsonPropertyName("is_normal_two_pick")] [Key("is_normal_two_pick")] public string? IsNormalTwoPick { get; set; } [JsonPropertyName("colosseum_name")] [Key("colosseum_name")] public string? ColosseumName { get; set; } [JsonPropertyName("is_round_period")] [Key("is_round_period")] public bool? IsRoundPeriod { get; set; } /// Wire STRING used by the client as a UI color/theme code. [JsonPropertyName("is_special_mode")] [Key("is_special_mode")] public string? IsSpecialMode { get; set; } [JsonPropertyName("card_pool_name")] [Key("card_pool_name")] public string? CardPoolName { get; set; } /// Present during round period — current stage number (1..3). [JsonPropertyName("now_round")] [Key("now_round")] public int? NowRound { get; set; } /// Present outside round period — next stage number. [JsonPropertyName("next_round")] [Key("next_round")] public int? NextRound { get; set; } [JsonPropertyName("start_time")] [Key("start_time")] public string? StartTime { get; set; } [JsonPropertyName("end_time")] [Key("end_time")] public string? EndTime { get; set; } [JsonPropertyName("is_display_tips")] [Key("is_display_tips")] public int? IsDisplayTips { get; set; } [JsonPropertyName("colosseum_id")] [Key("colosseum_id")] public int? ColosseumId { get; set; } [JsonPropertyName("tips_id")] [Key("tips_id")] public int? TipsId { get; set; } [JsonPropertyName("is_all_card_enabled")] [Key("is_all_card_enabled")] public int? IsAllCardEnabled { get; set; } /// Reuses the captured /mypage/index shape — single /// sales_period_time field per prod capture. [JsonPropertyName("sales_period_info")] [Key("sales_period_info")] public ColosseumSalesPeriodInfo? SalesPeriodInfo { get; set; } [JsonPropertyName("strategy_pick_num")] [Key("strategy_pick_num")] public int? StrategyPickNum { get; set; } }