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,
};
}