using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Models.Jeux.Plateau
{
    public class Pion
    {
        /// <summary>
        /// Constructeur de la classe Pion
        /// </summary>
        /// <param name="couleur">Objet couleur de type Couleur correspondant à la couleur du pion</param>
        /// <param name="pos">>Objet pos de type Case correspondant à la case sur laquelle est le pion</param>
        public Pion(Couleur couleur, Case pos)
        {
            this.couleurPion = couleur;
            this.pos = pos;

        }

        /// <summary>
        /// Crée le getter et le setter de l'attribut CouleurPion
        /// </summary>
        public Couleur CouleurPion
        {
            get
            {
                return couleurPion;
            }

            set
            {
                couleurPion = value;
            }
        }
        private Couleur couleurPion;


        /// <summary>
        /// Crée le getter et le setter de l'attribut Pos
        /// </summary>
        public Case Pos
        {
            get
            {
                return pos;
            }
            set
            {
                pos = value;
            }
        }
        private Case pos;


        /// <summary>
        /// Permet d'afficher un pion et sa position
        /// </summary>
        /// <returns>Phrase donnant la couleur du pion et sa position</returns>
        public override string ToString()
        {
            return $"Ce pion est {this.couleurPion} et sa case est {this.pos.CouleurCase}";
        }

        /// <summary>
        /// Indique si 2 pions sont égaux(meme position)
        /// </summary>
        /// <param name="obj">Objet obj de type object?</param>
        /// <returns>True si les pions sont identiques, false sinon</returns>
        public override bool Equals(object? obj)
        {
            if (obj == null || !(obj is Pion))
                return false;
            else
                return this.Pos == ((Pion)obj).Pos;
        }
    }
}
