summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions.c14
-rw-r--r--blits.c51
-rw-r--r--jouer.c12
-rw-r--r--magies.c2
-rw-r--r--prototypes.h4
5 files changed, 32 insertions, 51 deletions
diff --git a/actions.c b/actions.c
index 1877664..8460341 100644
--- a/actions.c
+++ b/actions.c
@@ -46,7 +46,7 @@ void Fattaquer(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int
case SDLK_RETURN:
case SDLK_f:
continuer=0;
- max=Fcalculerdegats(persos,Vtourallie,&min,ennemis,selection,clan,TYPE_ATTAQUE);
+ max=Fcalculerdegats(persos, *Vtourallie,&min,ennemis,selection,clan,TYPE_ATTAQUE);
degats=(rand()%(max-min+1))+min;
if(degats<0)
degats=0;
@@ -118,9 +118,11 @@ void Fattaquer(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int
SDL_Delay(1000);
SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats);
SDL_Flip(surfaces->Pecran);
+
+ return ret;
}
-int Fcalculerdegats(PERSONNAGES persos[],int *Vtourallie,int *min,ENNEMIS ennemis[],int selection,int camp,int type)
+int Fcalculerdegats(PERSONNAGES persos[], int Vtourallie,int *min,ENNEMIS ennemis[],int selection,int camp,int type)
{
unsigned int degats;
int max;
@@ -129,16 +131,16 @@ int Fcalculerdegats(PERSONNAGES persos[],int *Vtourallie,int *min,ENNEMIS ennemi
if(type==TYPE_ATTAQUE)
{
if(camp==ENNEMI)
- degats=persos[*Vtourallie].force*60-ennemis[selection].defense*50;
+ degats=persos[Vtourallie].force*60-ennemis[selection].defense*50;
else
- degats=persos[*Vtourallie].force*60-persos[selection].defense*50;
+ degats=persos[Vtourallie].force*60-persos[selection].defense*50;
}
else
{
if(camp==ENNEMI)
- degats=persos[*Vtourallie].magie*60-ennemis[selection].defensemagique*50;
+ degats=persos[Vtourallie].magie*60-ennemis[selection].defensemagique*50;
else
- degats=persos[*Vtourallie].magie*60-persos[selection].defensemagique*50;
+ degats=persos[Vtourallie].magie*60-persos[selection].defensemagique*50;
}
taux=degats/4;
max=degats+taux;
diff --git a/blits.c b/blits.c
index 3a5a574..d7b14e1 100644
--- a/blits.c
+++ b/blits.c
@@ -361,46 +361,21 @@ void Fblitterfond(SURFACES* surfaces)
SDL_Flip(surfaces->Pecran);
}
-void Fcolourselection(SURFACES* surfaces, PERSONNAGES persos[], int Vtourallie, POSITIONS* positions)
+void highlight_current_character(SURFACES* surfaces, PERSONNAGES persos[], int character_idx)
{
- int x=0;
- int i;
- int y=0;
- int tampon;
- Uint32 pixel;
- Uint8 r,g,b,a;
- int ajout=30;
-
- /* TODO understand if these are needed or not */
- (void) persos;
- (void) Vtourallie;
- (void) positions;
-
- for(i=0;i<3;i++)
- {
- tampon=0;
- SDL_LockSurface(surfaces->Tperso[i]);
- for(y=0;y<surfaces->Tperso[i]->h;y++)
- {
- for(x=0;x<surfaces->Tperso[i]->w;x++)
- {
- pixel=obtenirPixel(surfaces->Tperso[i],x,y);
- SDL_GetRGBA(pixel,surfaces->Pecran->format,&r,&g,&b,&a);
- tampon=(int)r+ajout;
- if(tampon>255)
- tampon=255;
- else if(tampon<0)
- tampon=0;
- r=(Uint8)tampon;
- pixel=SDL_MapRGBA(surfaces->Pecran->format,r,g,b,a);
- definirPixel(surfaces->Tperso[i],x,y,pixel);
- }
- }
- SDL_UnlockSurface(surfaces->Tperso[i]);
- SDL_SetColorKey(surfaces->Tperso[i],SDL_SRCCOLORKEY,SDL_MapRGB(surfaces->Pecran->format,r,g,b));
+ switch (persos[character_idx].classe) {
+ case PALADIN:
+ surfaces->Tperso[character_idx] = surfaces->red_paladin;
+ break;
+ case PRETRE:
+ surfaces->Tperso[character_idx] = surfaces->red_priest;
+ break;
+ case VOLEUR:
+ surfaces->Tperso[character_idx] = surfaces->red_thief;
+ break;
+ default:
+ abort();
}
- SDL_Flip(surfaces->Pecran);
-
}
void Fblitcoloredselection (SURFACES surfaces[],POSITIONS positions[],int Vtourallie,PERSONNAGES persos[])
diff --git a/jouer.c b/jouer.c
index 4268caf..a1b7b20 100644
--- a/jouer.c
+++ b/jouer.c
@@ -31,13 +31,17 @@ int Fjouer (SURFACES *surfaces, POSITIONS *positions, PERSONNAGES persos[],ENNEM
Vnbennemis=Fcalculernbennemis(); // on tire aléatoirement le nombre d'ennemis présents dans le combat
Fchoisirtypeennemis(persos,surfaces,ennemis,Vnbennemis); // on choisit la classe des ennemis comme guerrier gobelin etc
Fremplirennemis(surfaces,Vnbennemis,ennemis);
+
+ Vtour = rand() % 2; // on détermine aléatoirement si c'est les ennemis ou les persos qui tapent en premier
+ if (Vtour == ALLIE) {
+ /* the current character will be highlighted in red */
+ highlight_current_character(surfaces, persos, Vtourallie);
+ }
+
Fblitterpersos(surfaces,positions,persos); // on blit les persos sur l'ecran
Fblitterennemis(surfaces,positions,ennemis,Vnbennemis); // idem pour les ennemis
Fremplircompetencesennemis(ennemis,Vnbennemis); // on initialise les pv, pm, exp, etc DES ENNEMIS
- Vtour=(rand()%(1-0+1)+0); // on détermine aléatoirement si c'est les ennemis ou les persos qui tapent en premier
- Fcolourselection(surfaces,persos,Vtourallie,positions); // on créé les surfaces rouges (pour le tour)
- if(Vtour==ALLIE)
- Fblitcoloredselection(surfaces,positions,Vtourallie,persos);
+
while (continuer)
{
if(Vtour==ALLIE) //si un player joue
diff --git a/magies.c b/magies.c
index 2de216e..a52e8b4 100644
--- a/magies.c
+++ b/magies.c
@@ -45,7 +45,7 @@ int Fmagieelement (SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],
case SDLK_RETURN:
case SDLK_f:
continuer=0;
- max=Fcalculerdegats(persos,Vtourallie,&min,ennemis,selection,clan,TYPE_MAGIE);
+ max=Fcalculerdegats(persos, *Vtourallie,&min,ennemis,selection,clan,TYPE_MAGIE);
degats=(rand()%(max-min+1))+min;
if(degats<0)
degats=0;
diff --git a/prototypes.h b/prototypes.h
index 65591db..6b97c03 100644
--- a/prototypes.h
+++ b/prototypes.h
@@ -21,7 +21,7 @@ void Fremplircompetencesallie (PERSONNAGES persos[]);
int Fcalculernbennemis ();
void Fchoisirtypeennemis (PERSONNAGES persos[],SURFACES *surfaces,ENNEMIS ennemis[],int Vnbennemis);
void Fremplirennemis (SURFACES *surfaces,int Vnbennemis,ENNEMIS ennemis[]);
-int Fcalculerdegats(PERSONNAGES persos[],int *Vtourallie,int *min,ENNEMIS ennemis[],int selection,int camp,int type);
+int Fcalculerdegats(PERSONNAGES persos[], int Vtourallie,int *min,ENNEMIS ennemis[],int selection,int camp,int type);
int Fcalculersoins(PERSONNAGES persos[],int *Vtourallie,int *min,ENNEMIS ennemis[],int selection);
void Fchangercurseur (SURFACES *surfaces, POSITIONS *positions,int selection,ENNEMIS ennemis[]);
void Fchangercurseurennemis (SURFACES *surfaces, POSITIONS *positions,int selection,ENNEMIS ennemis[]);
@@ -45,7 +45,7 @@ void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES pers
int Fpotion(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type,int*Vtour);
int Fether(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type,int *Vtour);
void Fblitterfond(SURFACES* surfaces);
-void Fcolourselection(SURFACES* surfaces, PERSONNAGES persos[],int Vtourallie,POSITIONS* positions);
+void highlight_current_character(SURFACES *surfs, PERSONNAGES persos[], int character_idx);
void Fblitcoloredselection (SURFACES surfaces[],POSITIONS positions[],int Vtourallie,PERSONNAGES persos[]);
Uint32 obtenirPixel(SDL_Surface *surface, int x, int y);
void definirPixel(SDL_Surface *surface, int x, int y, Uint32 pixel);