Skip to content
Snippets Groups Projects
Commit db968b00 authored by ColinDrieu's avatar ColinDrieu
Browse files

Ajout au controlleur d'une fonction pour ajouter la Carte de jeu.

parent b9d28529
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -16,6 +16,7 @@
#include "gamePackage.h"
#include "roxml.h"
#include "SDL.h"
#include "structures.h"
Partie * partieGlobale;
Game_Package packGlobal;
......@@ -196,17 +197,11 @@ char ** obtenirDescriptionCarte(){
* \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
* \return un pointeur vers cette case
*/
Case * trouverCase(Carte c, int x, int y)
{
if((x<0)||(x>=LARGEUR_CARTE)){
return NULL;
}
else if((y<0)||(y>=HAUTEUR_CARTE)){
return NULL;
}
else{
return &c[(y*LARGEUR_CARTE)+x];
Case * trouverCase(Carte_Jeu * c, int x, int y){
if((x>=0)&&(x<LARG_MAX_CARTE)&&(y>=0)&&(y<HAUT_MAX_CARTE)){
return &c->Tab_Cases[x][y];
}
return NULL;
}
/*!
......@@ -230,7 +225,7 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
}
//Création du personnage
Personnage * p = default_personnage(i,packGlobal,trouverCase(packGlobal.Cartes_Package[0],0,0));
Personnage * p = default_personnage(i,packGlobal);
//Ajout du Personnage à l'équipe du Joueur
switch (numJoueur){
......@@ -253,14 +248,43 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
else{
return 0;
}
}
/*!
* \fn int selectionnerCarte(char * nomCarte)
* \brief La fonction ajoute la Carte dont le nom est en parrametre à la Partie.
* Les Terrains de la Carte sont initialisé à partir des cartes décrites en XML
* Les Personnages sont placés à leur position de départ sur la carte.
*
* \param Le nom de la Carte décrite en XML.
* \return 1 si la carte est correctement initialisée, 0 sinon.
*/
int selectionnerCarte(char * nomCarte){
int i;
i=0;
//Recherche de la Carte dans le Package
while((strcmp(nomCarte,packGlobal.Cartes_Package[i].nom)!=0)&&(i<nbCartes())){
i++;
}
if(i>=nbCartes()){
return 0;
}
//Initialisation de la Carte_Jeu
if(initCarte(&packGlobal.Cartes_Package[i],getCarte(partieGlobale),&packGlobal)==0){
return 0;
}
// Positionnement des Personnages sur la Carte_Jeu.
setOnFirstJoueur(partieGlobale->participants);
for(i=0;i<TAILLE_MAX_GROUPE;i++){
setPosition(getCurrentJoueur(partieGlobale->participants)->groupe[i],&partieGlobale->c->Tab_Cases[6+i][0]);
}
nextJoueur(partieGlobale->participants);
for(i=0;i<TAILLE_MAX_GROUPE;i++){
setPosition(getCurrentJoueur(partieGlobale->participants)->groupe[i],&partieGlobale->c->Tab_Cases[6+i][HAUT_MAX_CARTE-1]);
}
return 1;
}
......
......@@ -22,9 +22,11 @@ char ** obtenirNomsCartes();
char ** obtenirDescriptionCarte();
void freeCartes(char **);
Case * trouverCase(Carte c, int x, int y);
Case * trouverCase(Carte_Jeu * c, int x, int y);
void ajouterPersonnage(char * nomClasse, int numTab, int numJoueur);
int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur);
int selectionnerCarte(char * nomCarte);
#endif // CONTROLEUR_H
......
......@@ -9,6 +9,7 @@
#include "deplacements.h"
#include "SDL.h"
#include "controleurSDL.h"
#include "controleur.h"
/*!
* \file controleurSDL.c
......@@ -34,7 +35,7 @@ void init_controleur(SDL_Rect Position_Case[])
init_case(&Carte_actuelle[i],Position_Case[i].x,Position_Case[i].y,NULL);
}
for(i=0;i<NB_PERSO;i++)
set_personnage(&ListePersos[i],NULL,&Carte_actuelle[i]);
set_personnage(&ListePersos[i],NULL);
}
/*!
......
......@@ -36,7 +36,7 @@ Personnage* init_personnage()
* \param Un personnage.
* \return Un personnage initialisé.
*/
Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart)
Personnage* set_personnage(Personnage *perso, Classe *c)
{
perso->classe=c;
if(c!=NULL){
......@@ -44,8 +44,7 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart)
perso->PV=c->PV_max;
perso->mana=c->mana_max;
}
perso->position=casedepart;
marquer_occupee(casedepart);
perso->position=NULL;
return perso;
}
......@@ -56,10 +55,10 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart)
* \param Le numéro de la défination du personnage dans le fichier XML, un game_package.
* \return Un personnage pret a l'action.
*/
Personnage* default_personnage(int numero, Game_Package Pack,Case *casedepart)
Personnage* default_personnage(int numero, Game_Package Pack)
{
Personnage* Perso = init_personnage();
set_personnage(Perso, &Pack.Classes_Package[numero], casedepart);
set_personnage(Perso, &Pack.Classes_Package[numero]);
return Perso;
}
......@@ -106,7 +105,7 @@ Classe * getClasse(Personnage *p){
}
/*!
* \fn Classe * getPosition(Personnage *p)
* \fn Case * getPosition(Personnage *p)
* \brief La fonction renvoie la position d'un personnage.
*
* \param Un personnage.
......@@ -116,6 +115,17 @@ Case * getPosition(Personnage *p){
return p->position;
}
/*!
* \fn void setPosition(Personnage *p)
* \brief La fonction initialise la position d'un personnage.
*
* \param Un personnage.
*/
void setPosition(Personnage * p, Case * c){
p->position=c;
marquer_occupee(c);
}
/*!
* \fn Classe * get_PV(Personnage *p)
* \brief La fonction renvoie les points de vie d'un personnage.
......
......@@ -6,11 +6,11 @@
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED
Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart);
Personnage* set_personnage(Personnage *perso, Classe *c);
Personnage* init_personnage();
Personnage* default_personnage(int numero, Game_Package Pack, Case *casedepart);
Personnage* default_personnage(int numero, Game_Package Pack);
void freePersonnage(Personnage * p);
......@@ -18,6 +18,8 @@ void setNumero(Personnage * p, int n);
int getNumero(Personnage * p);
void setPosition(Personnage * p, Case * c);
Case* getPosition(Personnage *p);
int get_PV(Personnage *p);
......@@ -32,7 +34,7 @@ char * getNomPersonnage(Personnage * p);
boolean est_paralyse(Personnage *p);
int deplacer_personnage (Personnage *perso, Case *destination);
int deplacer_personnage(Personnage *perso, Case *destination);
int estSurLaCase(Personnage * p, Case * c);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment