using CoreLibrary.Core;
using CoreLibrary.Joueurs;

namespace CoreLibrary.Events
{
    /// <summary>
    /// Classe contenant les arguments passées en paramètre lors de l'événement NouveauTour.
    /// </summary>
    public class NouveauTourEventArgs : EventArgs
    {
        /// <summary>
        /// Le joueur dont c'est le tour.
        /// </summary>
        public Joueur Joueur { get; private set; }

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

        /// <summary>
        /// Le code où ajouter les jetons
        /// </summary>
        public Code Code { get; private set; }

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

        /// <summary>
        /// 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, Code code, IEnumerable<IEnumerable<Jeton?>> grille, IEnumerable<IEnumerable<Indicateur>> indicateurs) 
        {
            Joueur = joueur;
            Tour = tour;
            Code = code;
            Grille = grille;
            Indicateurs = indicateurs;
        }
    }
}