using SVSim.Database.Enums; namespace SVSim.Database.Models.Config; /// /// Event-level configuration for an active Arena Colosseum (Grand Prix) season. Default /// emits IsColosseumPeriod = false so the lobby read /// endpoints render an empty "no event scheduled" payload without crashing the client. /// Flipping the event on is an admin operation per /// docs/operations/grand-prix-event-setup.md — write a row to GameConfigs. /// [ConfigSection("ColosseumSeason")] public class ColosseumSeasonConfig { /// Master gate. false = lobby reads render an empty info block and /// entry rejects. The client (Wizard/ColosseumEntryInfoTask.cs) reads this and /// skips parsing the rest of the colosseum_info object. public bool IsColosseumPeriod { get; set; } /// Stamped onto every at entry time. public int SeasonId { get; set; } public string ColosseumName { get; set; } = ""; /// Bracket format. Stamped onto the run at entry time. public Format DeckFormat { get; set; } = Format.Rotation; /// Server stores bool; the wire shape is the STRING "0"/"1" per Wizard/ColosseumEntryInfoTask.cs's /// jsonData.ToString() == "1" parse. The response DTO converts at serialization time. public bool IsNormalTwoPick { get; set; } /// Wire string used by the client as a theme/color code. Empty when not in special mode. public string IsSpecialMode { get; set; } = ""; public string? AnnounceId { get; set; } public DateTime EventStartTime { get; set; } public DateTime EventEndTime { get; set; } /// How many bracket entries get eliminated in the final round before champion-determination. public int FinalRoundEliminateCount { get; set; } public string CardPoolName { get; set; } = ""; /// Card-set ids used as the 2-Pick / Chaos draft pool override for this season. /// Phase 3 reads this through ArenaTwoPickCardPoolService instead of /// ChallengeConfig.PoolCardSetIds. public List PoolCardSetIds { get; set; } = new(); public int RupyCost { get; set; } public int TicketCost { get; set; } public int CrystalCost { get; set; } public bool IsAllowedFreeEntry { get; set; } public bool IsAllCardEnabled { get; set; } /// Number of strategies offered per pick in 2-Pick Chaos mode. public int StrategyPickNum { get; set; } /// Drives the client's first-time tutorial tip popup for this cup /// (Wizard/ColosseumEntryInfoTask.cs:129: NeedsFirstTips = (is_display_tips == 1)). /// Server emits wire int 0/1. public bool IsDisplayTips { get; set; } /// Tutorial tip content id, paired with . Wire int. public int TipsId { get; set; } public DateTime SalesPeriodStart { get; set; } public DateTime SalesPeriodEnd { get; set; } public static ColosseumSeasonConfig ShippedDefaults() => new() { IsColosseumPeriod = false, }; }