diff options
-rw-r--r-- | actions.c | 14 | ||||
-rw-r--r-- | blits.c | 51 | ||||
-rw-r--r-- | jouer.c | 12 | ||||
-rw-r--r-- | magies.c | 2 | ||||
-rw-r--r-- | prototypes.h | 4 |
5 files changed, 32 insertions, 51 deletions
@@ -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; @@ -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[]) @@ -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 @@ -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); |