using CoreLibrary.Exceptions;

namespace CoreLibrary.Events
{
    /// <summary>
    /// Représente les arguments d'événement pour le début d'un nouveau tour.
    /// </summary>
    public class NouveauTourEventArgs : EventArgs
    {
        /// <summary>
        /// Obtient le joueur dont c'est le tour.
        /// </summary>
        public Joueur Joueur { get; private set; }

        /// <summary>
        /// Obtient le numéro du tour.
        /// </summary>
        public int Tour {  get; private set; }

        /// <summary>
        /// Obtient la grille du joueur actuelle.
        /// </summary>
        public IEnumerable<IEnumerable<Jeton?>> Grille { get; private set; }

        /// <summary>
        /// Obtient les indicateurs de la grille de jeu.
        /// </summary>
        public IEnumerable<IEnumerable<Indicateur>> Indicateurs { get; private set; }

        /// <summary>
        /// Initialise une nouvelle instance de la classe <see cref="NouveauTourEventArgs"/> avec les informations spécifiées.
        /// </summary>
        /// <param name="joueur">Le joueur dont c'est le tour.</param>
        /// <param name="tour">Le numéro du tour.</param>
        /// <param name="grille">La grille du joueur actuelle.</param>
        /// <param name="indicateurs">Les indicateurs de la grille de jeu.</param>
        public NouveauTourEventArgs(Joueur joueur, int tour, IEnumerable<IEnumerable<Jeton?>> grille, IEnumerable<IEnumerable<Indicateur>> indicateurs) 
        {
            Joueur = joueur;
            Tour = tour;
            Grille = grille;
            Indicateurs = indicateurs;
        }
    }
}