Files
2026-09-04 11:31:52 +02:00

47 lines
1.7 KiB
C#

namespace Faraon.Core.Models;
public enum TurnState
{
Playing,
SelectingSuit,
PassScreen,
RoundOver,
GameOver
}
public class GameState
{
public List<Player> Players { get; set; } = new();
public int CurrentPlayerIndex { get; set; } = 0;
public List<Card> DrawDeck { get; set; } = new();
public List<Card> 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<Player> ActiveTournamentPlayers => Players.Where(p => !p.IsEliminated).ToList();
public GameMatchStats Stats { get; set; } = new();
public List<GameLogItem> MoveLog { get; set; } = new();
}