/*!
* \file AffichageConsole.c
* \brief Fichier contenant le code des fonctions liees a la structure AffichageConsole.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "AffichageConsole.h"
#include "partie.h"
#include "joueur.h"
#include "joueurList.h"
#include "personnage.h"
#include "case.h"

/*!
 * \fn void afficheEnsembleJoueur(Partie *p)
 * \brief La fonction permet d'afficher le nom de chaque joueur avec leur personnage et ses coordonnees.
 *
 * \param Un pointeur vers les joueur a afficher avec leur personnage et ses coordonnees.
 */

void afficheEnsembleJoueur(Partie *p){
    Joueur * Temporaire = getCurrentJoueur(p->participants);    /* On sauve l'emplacement du current actuel*/
    setOnFirstJoueur(p->participants);  /* On se positionne sur le premier joueur*/
    while(!outOfJoueurList(p->participants)){   /*Tant qu'on est pas arriv� au dernier current*/
    afficheNomJoueur(getCurrentJoueur(p->participants));
    afficheNomPersonnage(getPersonnage(getCurrentJoueur(getListJoueur(p)),0));
    afficheCoordonneesPersonnage(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(p)),0)));
    nextJoueur(p->participants);
    }
    /*On affiche le dernier current (personnage)*/
    afficheNomJoueur(getCurrentJoueur(p->participants));
    afficheNomPersonnage(getPersonnage(getCurrentJoueur(getListJoueur(p)),0));
    afficheCoordonneesPersonnage(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(p)),0)));

    setOnJoueur(p->participants, Temporaire);   /* On retourne sur le current original*/
}

/*!
 * \fn void afficheNomJoueur(Joueur * j)
 * \brief La fonction permet d'afficher le nom du joueur.
 *
 * \param Un pointeur vers le joueur a afficher.
 */
void afficheNomJoueur(Joueur * j){
    printf("Joueur: %s\n", getNomJoueur(j));
}

/*!
 * \fn void afficheNomPersonnage(Personnage * p)
 * \brief La fonction permet d'afficher le nom du personnage.
 *
 * \param Un pointeur vers le personnage a afficher.
 */
void afficheNomPersonnage(Personnage * p){
    /*printf("Personnage: %s\n", getPersonnage(p));   Il n'y a pas de fonction pour r�cup�rer le nom du personnage */
}

/*!
 * \fn void afficheCoordoneesPersonnage(Case * c)
 * \brief La fonction permet d'afficher les coordonnees du personnage.
 *
 * \param Un pointeur vers les coordonnees du personnage a afficher.
 */
void afficheCoordonneesPersonnage(Case *c){
    printf("Coordonn�es: \n x = %d\n y = %d \n", get_x(c), get_y(c));
}

/*!
 * \fn void afficheEtatPersonnage(Personnage * p)
 * \brief La fonction permet d'afficher l'etat du personnage.
 *
 * \param Un pointeur vers l'etat du personnage a afficher.
 */
void afficheEtatPersonnage(Personnage *p){
    afficheNomPersonnage(p);
    printf("Points de d�placement: %d\n", get_PD(p));
    printf("Points de vie: %d\n", get_PV(p));
    printf("Mana: %d\n", get_mana(p));
}