diff --git a/src/controleur.c b/src/controleur.c index 6b2a7da8b64cdfa813669a6b71092025b0815bcd..ccc6408279d8918be66c9cbc486d840c0a00b4ef 100644 --- a/src/controleur.c +++ b/src/controleur.c @@ -361,7 +361,6 @@ char * obtenirRessourcePersonnage(int x, int y){ int i; Joueur * actuel = NULL; char * ressource = malloc(TAILLE_CHEMIN*sizeof(char)); - ressource = NULL; //Test Personnage sur la case. if(!personnagePresent(x,y)){ return NULL; @@ -401,6 +400,63 @@ char * obtenirRessourcePersonnage(int x, int y){ } } + /*! + * \fn char * obtenirRessourcePersonnageNum(int numero) + * \brief La fonction renvoie la ressource d'un Personnage dont le numero est celui définit dans la sdl. + * + * \param Le numero du personnage definit dans la sdl. + * \return la ressource du personnage, NULL si le personnage n'est pas trouvé. + */ +char * obtenirRessourcePersonnageNum(int numero){ + Joueur * actuel = NULL; + char * ressource = malloc(TAILLE_CHEMIN*sizeof(char)); + actuel = getCurrentJoueur(getListJoueur(partieGlobale)); + + if ((numero>0)&&(numero<=3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))->skins.charac_default,TAILLE_CHEMIN); + setOnJoueur(getListJoueur(partieGlobale),actuel); + return ressource; + } + else if ((numero>3)&&(numero<=6)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))->skins.charac_default,TAILLE_CHEMIN); + setOnJoueur(getListJoueur(partieGlobale),actuel); + return ressource; + } + else{ + setOnJoueur(getListJoueur(partieGlobale),actuel); + return NULL; + } +} + + /*! + * \fn void * obtenirPositionPersonnage(int numero, int * x, int * y) + * \brief La fonction modifie les parrametres x et y en entrée en fonction des coordonnées du Personnage dont le numero en parrametre + * est celui définit dans la sdl. + * + * \param Le numero du personnage definit dans la sdl, des pointeurs vers des int x et y pour récupérer les coordonnées. + */ +void obtenirPositionPersonnage(int numero, int * x, int * y){ + Joueur * actuel = NULL; + actuel = getCurrentJoueur(getListJoueur(partieGlobale)); + + if ((numero>0)&&(numero<=3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))); + *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))); + setOnJoueur(getListJoueur(partieGlobale),actuel); + } + else if ((numero>3)&&(numero<=6)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))); + *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))); + setOnJoueur(getListJoueur(partieGlobale),actuel); + } +} + /*! * \fn Personnage * trouverPersonnage(Case * c) * \brief La fonction renvoie un pointeur vers le personnage présent sur la case en parrammetre. @@ -618,7 +674,7 @@ char ** obtenirNomsAttaquesPersonnage(int numero){ // Je met ici mes tests réalisés dans le main pour éviter de les réécrire si jamais il y a un problème. // Si vous voulez tester aussi, à recopier dans le main avant l'appel à initJeu(). void testControlleurConsole(){ - int i,j,n; + int i,j,n,x,y; EtatsJeu state = SAISIE_JOUEURS; extern Partie * partieGlobale; extern Game_Package packGlobal; @@ -664,13 +720,16 @@ void testControlleurConsole(){ else{ n=4+getIndicePersonnage((getListJoueur(partieGlobale)->lastNodeJoueur->j),trouverPersonnage(getCase(getCarte(partieGlobale),i,j))); } + obtenirPositionPersonnage(n,&x,&y); + printf("Position : %d:%d\n",x,y); printf("%s\n", obtenirNomClassePersonnage(n)); - printf("%s\n", obtenirPVPersonnage(n)); - printf("%s\n", obtenirPVMaxPersonnage(n)); - printf("%s\n", obtenirManaPersonnage(n)); - printf("%s\n", obtenirManaMaxPersonnage(n)); - printf("%s\n", obtenirPDPersonnage(n)); - printf("%s\n", obtenirPDMaxPersonnage(n)); + printf("%s\n", obtenirRessourcePersonnageNum(n)); + printf("%d\n", obtenirPVPersonnage(n)); + printf("%d\n", obtenirPVMaxPersonnage(n)); + printf("%d\n", obtenirManaPersonnage(n)); + printf("%d\n", obtenirManaMaxPersonnage(n)); + printf("%d\n", obtenirPDPersonnage(n)); + printf("%d\n", obtenirPDMaxPersonnage(n)); } } } diff --git a/src/controleur.h b/src/controleur.h index 7a9befaa816c4849807adf99ee08c2048f792be7..c1b54526cb159e577be1bbe0e1d37ca8b15d2db4 100644 --- a/src/controleur.h +++ b/src/controleur.h @@ -36,6 +36,8 @@ char * ObtenirRessourceTerrain(int x, int y); int personnagePresent(int x, int y); char * obtenirRessourcePersonnage(int x, int y); +char * obtenirRessourcePersonnageNum(int numero); +void obtenirPositionPersonnage(int numero, int * x, int * y); Personnage * trouverPersonnage(Case * c);