package fr.siomd.ludo;

/**
 * <b>Carte est la classe représentant une carte.</b>
 * <p>
 *     Une carte est caractérisée par les informations suivantes :
 *     <ul>
 *         <li>Une figure : As, Roi, Dame, valet, 10, 9, 8, 7, 6, 5, 4, 3, 2</li>
 *         <li>Une couleur :  Coeur, Carreau, Pique, Trèfle</li>
 *     </ul>
 * </p>
 *
 * @author Grégoire
 * @version 1.0
 */
public class Carte {
    /**
     * La figure de la carte
     */
    private String figure;
    /**
     * La couleur de la carte
     */
    private String couleur;

    /**
     * Retourne la couleur de la carte.
     *
     * @return La couleur de la carte.
     */
    public String getCouleur(){
        return couleur;
    }

    /**
     * Retourne la figure de la carte.
     *
     * @return La figure de la carte.
     */
    public String getFigure(){
        return figure;
    }

    /**
     * Constructeur Carte.
     * <p>
     *     A la construction d'un objet carte, la figure et la couleur sont valorisés
     *     avec les paramètres.
     * </p>
     *
     * @param pCouleur La couleur de la carte.
     * @param pFigure La figure de la carte.
     */
    public Carte(String pCouleur, String pFigure){
        couleur = pCouleur;
        figure = pFigure;
    }

    /**
     * Retourne le nom complet de la carte.
     *
     * @return Le nom de la carte sous forme d'une chaine de caractère avec figure et couleur.
     */
    public String getNom(){
        return getFigure() + " de " + getCouleur();
    }

    /**
     * Retourne la valeur de la carte
     *
     * @return La valeur de la carte sous forme d'un entier de 14 à 1
     */
    public int getValeur(){
        int valeur;
        switch(getFigure()){
            case "As": valeur =  14; break;
            case "Roi": valeur = 13; break;
            case "Dame": valeur = 12; break;
            case "Valet": valeur = 11; break;
            default: valeur = Integer.parseInt(figure); break;
        }
        return valeur;
    }

    /**
     * Retourne le nom du fichier image représentant la carte (sans l'extension).
     *
     * @return le nom du fichier image représentatnt la carte sous forme d'une chaine de caractère.
     */
    public String getNomImg() {
        String txtFigure;
        switch(getCouleur()){
            case "Coeur": txtFigure = "co"; break;
            case "Carreau": txtFigure = "ca"; break;
            case "Trèfle": txtFigure = "t"; break;
            case "Pique": txtFigure = "p"; break;
            default : txtFigure="";break;
        }
        return txtFigure + Integer.toString(getValeur()) ;
    }

    /**
     * indique si la carte correspond à l'atout donné en paramètre
     *
     * @param pCouleur Couleur de la carte
     * @return booléen indiquant si la carte correspond à l'atout en paramètre
     */
    public boolean isAtout(String pCouleur){
        return couleur.equals(pCouleur);
    }
}
