namespace Faraon.Core.Models; public enum TurnState { Playing, SelectingSuit, PassScreen, RoundOver, GameOver } public class GameState { public List Players { get; set; } = new(); public int CurrentPlayerIndex { get; set; } = 0; public List DrawDeck { get; set; } = new(); public List DiscardPile { get; set; } = new(); public Suit? ActiveSuit { get; set; } public int PendingDrawCount { get; set; } = 0; public bool PendingSkip { get; set; } = false; public RuleOptions Rules { get; set; } = new(); public bool IsGameOver { get; set; } = false; public Player? LastFinishedPlayer { get; set; } public int ReviveTurnsRemaining { get; set; } = 0; public int ReviveRoundsRemaining { get; set; } = 0; public int ReviveWindowInitialTurns { get; set; } = 0; public int TurnCount { get; set; } = 0; public TurnState TurnState { get; set; } = TurnState.Playing; public Player? PendingHornikPlayer { get; set; } public Card? TopCard => DiscardPile.Count > 0 ? DiscardPile[^1] : null; // Olympijský režim (Turnaj) public int RoundNumber { get; set; } = 1; public bool IsRoundOver { get; set; } = false; public Player? RoundLoser { get; set; } public Player? MatchWinner { get; set; } public bool IsMatchOver { get; set; } = false; public Player CurrentPlayer => Players.Count > 0 ? Players[CurrentPlayerIndex % Players.Count] : new Player(); public int ActivePlayersCount => Players.Where(p => !p.IsEliminated).Count(p => !p.HasFinished); public List ActiveTournamentPlayers => Players.Where(p => !p.IsEliminated).ToList(); }