diff options
author | Olivier Gayot <duskcoder@gmail.com> | 2015-01-07 16:56:21 +0100 |
---|---|---|
committer | Olivier Gayot <duskcoder@gmail.com> | 2015-01-07 16:56:21 +0100 |
commit | b3295086c84b09353d5e89c6f7c743167b486a49 (patch) | |
tree | fc9dcc035c486d028bf4460c1b2d9e988efed9d4 /actions.c | |
parent | 461a28bb608e117267431eac78b08d3d8a089c0c (diff) |
clean the code and fix bugs
Signed-off-by: Olivier Gayot <duskcoder@gmail.com>
Diffstat (limited to 'actions.c')
-rw-r--r-- | actions.c | 465 |
1 files changed, 236 insertions, 229 deletions
@@ -5,10 +5,14 @@ #include <stdio.h> #include <stdlib.h> -void Fattaquer(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,int *Vtour) +/* TODO remove */ +OBJET objets_g; + +enum action_state_t Fattaquer(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis) { int max; int min; + enum action_state_t ret = ACTION_CANCELED; unsigned int continuer = 1; int degats; unsigned int Bdegats=DEGATS; @@ -46,7 +50,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; @@ -95,17 +99,7 @@ void Fattaquer(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); SDL_Flip (surfaces->Pecran); // on supprime le cadre cible de l'ecran } - if (*Vtourallie==2) - { - inverse_boolean(*Vtour); - *Vtourallie=0; - } - else - { - (*Vtourallie)++; - Fblitterpersos(surfaces,positions,persos); - Fblitcoloredselection(surfaces,positions,*Vtourallie,persos); - } + ret = ACTION_PERFORMED; break; default: break; @@ -149,10 +143,11 @@ int Fcalculerdegats(PERSONNAGES persos[], int Vtourallie,int *min,ENNEMIS ennemi return max; } -void Fselectionnermagienoire(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,int *Vtour) +enum action_state_t Fselectionnermagienoire(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis) { SDL_Event event; unsigned int continuer=1; + enum action_state_t ret = ACTION_CANCELED; int nbactions=5; int page=0; int selection=0; @@ -192,17 +187,25 @@ void Fselectionnermagienoire(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES case SDLK_RETURN: SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); SDL_Flip(surfaces->Pecran); - continuer=Fmagieelement(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,selection,Vtour); + ret = Fmagieelement(surfaces,positions,persos, Vtourallie,ennemis,Vnbennemis,selection); + + if (ret == ACTION_PERFORMED) { + continuer = 0; + } + break; default: break; } } } + + return ret; } -void Fselectionnermagieblanche(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,int *Vtour) +enum action_state_t Fselectionnermagieblanche(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis) { + enum action_state_t ret = ACTION_CANCELED; int continuer=1; int nbactions=1; int page=0; @@ -245,17 +248,24 @@ void Fselectionnermagieblanche(SURFACES *surfaces,POSITIONS *positions,PERSONNAG SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); SDL_Flip(surfaces->Pecran); if(selection==SOIN) - continuer=Fmagiesoin(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,Vtour); + ret = Fmagiesoin(surfaces,positions,persos, Vtourallie,ennemis,Vnbennemis); + + if (ret == ACTION_PERFORMED) { + continuer = 0; + } break; default: break; } } } + + return ret; } -void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int*Vtour) +enum action_state_t Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis) { + enum action_state_t ret = ACTION_CANCELED; SDL_Event event; unsigned int continuer=1; int nbactions=4; @@ -264,7 +274,7 @@ void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES pers while (continuer) { - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,objets); + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,&objets_g); SDL_WaitEvent (&event); switch (event.type) { @@ -282,7 +292,7 @@ void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES pers else selection=nbactions-1; page=selection/3; - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,objets); + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,&objets_g); break; case SDLK_DOWN: case SDLK_j: @@ -291,7 +301,7 @@ void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES pers else selection=0; page=selection/3; - Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,objets); + Fchangeractionselectionnee(surfaces,positions,selection,page,nbactions,OBJETS,&objets_g); break; case SDLK_RETURN: case SDLK_f: @@ -300,265 +310,262 @@ void Fselectionnerobjet(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES pers if(page==0) { if(selection==POTION) - continuer=Fpotion(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,objets,selection,Vtour); + ret = Fpotion(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,&objets_g,selection); else if(selection==ETHER) - continuer=Fether(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,objets,selection,Vtour); + ret = Fether(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,&objets_g,selection); else if(selection==POTIONPLUS) - continuer=Fpotion(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,objets,selection,Vtour); + ret = Fpotion(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,&objets_g,selection); + } else if(page==1) { if(selection==ETHERPLUS) - continuer=Fether(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,objets,selection,Vtour); + ret = Fether(surfaces,positions,persos,Vtourallie,ennemis,Vnbennemis,&objets_g,selection); } + + if (ret == ACTION_PERFORMED) { + continuer = 0; + } + break; default: break; } } } + + return ret; } -int Fpotion(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type,int*Vtour) +enum action_state_t Fpotion(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type) { + enum action_state_t ret = ACTION_CANCELED; + int continuer=1; + SDL_Event event; + int selection=0; + int delay=1; + int soins=0; + int Bdegats=SOINS; + int clan=ALLIE; + + /* since the item does not depend on a specific character .. */ + (void) Vtourallie; + if(type==POTION&&objets->potions<=0) - return 1; + return ACTION_ERROR; else if(type==POTIONPLUS&&objets->potionsplus<=0) - return 1; - else + return ACTION_ERROR; + + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadreactions,surfaces->Pecran,&positions->Vpositioncadreactions); + while(persos[selection].etat==MORT) + selection++; + Fchangercurseurpersos (surfaces,positions,selection,persos); + while(continuer) { - int continuer=1; - SDL_Event event; - int selection=0; - int delay=1; - int soins=0; - int Bdegats=SOINS; - int clan=ALLIE; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadreactions,surfaces->Pecran,&positions->Vpositioncadreactions); - while(persos[selection].etat==MORT) - selection++; - Fchangercurseurpersos (surfaces,positions,selection,persos); - while(continuer) + SDL_WaitEvent(&event); + switch(event.type) { - SDL_WaitEvent(&event); - switch(event.type) - { - case SDL_KEYDOWN: + case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_a: - delay=0; - continuer = 0; - if(clan==ENNEMI) - { - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); - } - else - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); - SDL_Flip (surfaces->Pecran); - break; - SELECTION_CIBLE() - case SDLK_RETURN: - case SDLK_f: - if(type==POTION) - soins=1000; - else if(type==POTIONPLUS) - soins=4000; - if(clan==ENNEMI) - { - if(Bdegats==DEGATS) - ennemis[selection].pv-=soins; - else - ennemis[selection].pv+=soins; - if(ennemis[selection].pv<=0) + delay=0; + continuer = 0; + if(clan==ENNEMI) { - ennemis[selection].pv=0; - ennemis[selection].etat=MORT; - positions->Vpositionmort.x=positions->Vpositionennemis[selection].x+surfaces->Tennemi[selection]->w/2-surfaces->Pmort->w/2; - positions->Vpositionmort.y=positions->Vpositionennemis[selection].y+surfaces->Tennemi[selection]->h/2-surfaces->Pmort->h/2; - SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); } - else if(ennemis[selection].pv>ennemis[selection].pvinitiaux) - ennemis[selection].pv=ennemis[selection].pvinitiaux; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); - } - else - { - if(Bdegats==DEGATS) - persos[selection].pv-=soins; else - persos[selection].pv+=soins; - if(persos[selection].pv<=0) - { - persos[selection].pv=0; - persos[selection].etat=MORT; - positions->Vpositionmort.x=positions->Vpositionpersos[selection].x+surfaces->Tperso[selection]->w/2-surfaces->Pmort->w/2; - positions->Vpositionmort.y=positions->Vpositionpersos[selection].y+surfaces->Tperso[selection]->h/2-surfaces->Pmort->h/2; - SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); - } - else if(persos[selection].pv>persos[selection].pvinitiaux) - persos[selection].pv=persos[selection].pvinitiaux; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); - } - if(Bdegats==DEGATS) - Fafficherdegats (surfaces,positions,soins,clan,selection,persos); - else - Faffichersoins (surfaces,positions,soins,clan,selection,persos); - if(clan==ENNEMI) - { - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); SDL_Flip (surfaces->Pecran); - } - if (*Vtourallie==2) - { - *Vtourallie=0; - inverse_boolean(*Vtour); - } - else - { - Fblitcoloredselection(surfaces,positions,*Vtourallie,persos); - (*Vtourallie)++; - } - continuer=0; - if(type==POTION) - objets->potions--; - else if(type==POTIONPLUS) - objets->potionsplus--; - break; + break; + SELECTION_CIBLE() + case SDLK_RETURN: + case SDLK_f: + if(type==POTION) + soins=1000; + else if(type==POTIONPLUS) + soins=4000; + if(clan==ENNEMI) + { + if(Bdegats==DEGATS) + ennemis[selection].pv-=soins; + else + ennemis[selection].pv+=soins; + if(ennemis[selection].pv<=0) + { + ennemis[selection].pv=0; + ennemis[selection].etat=MORT; + positions->Vpositionmort.x=positions->Vpositionennemis[selection].x+surfaces->Tennemi[selection]->w/2-surfaces->Pmort->w/2; + positions->Vpositionmort.y=positions->Vpositionennemis[selection].y+surfaces->Tennemi[selection]->h/2-surfaces->Pmort->h/2; + SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + } + else if(ennemis[selection].pv>ennemis[selection].pvinitiaux) + ennemis[selection].pv=ennemis[selection].pvinitiaux; + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); + } + else + { + if(Bdegats==DEGATS) + persos[selection].pv-=soins; + else + persos[selection].pv+=soins; + if(persos[selection].pv<=0) + { + persos[selection].pv=0; + persos[selection].etat=MORT; + positions->Vpositionmort.x=positions->Vpositionpersos[selection].x+surfaces->Tperso[selection]->w/2-surfaces->Pmort->w/2; + positions->Vpositionmort.y=positions->Vpositionpersos[selection].y+surfaces->Tperso[selection]->h/2-surfaces->Pmort->h/2; + SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + } + else if(persos[selection].pv>persos[selection].pvinitiaux) + persos[selection].pv=persos[selection].pvinitiaux; + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); + } + if(Bdegats==DEGATS) + Fafficherdegats (surfaces,positions,soins,clan,selection,persos); + else + Faffichersoins (surfaces,positions,soins,clan,selection,persos); + if(clan==ENNEMI) + { + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_Flip (surfaces->Pecran); + } + continuer=0; + ret = ACTION_PERFORMED; + if(type==POTION) + objets->potions--; + else if(type==POTIONPLUS) + objets->potionsplus--; + break; default: - break; + break; } break; - } } - if (delay) - SDL_Delay(1000); - SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); - SDL_Flip(surfaces->Pecran); - return continuer; } + if (delay) + SDL_Delay(1000); + SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); + SDL_Flip(surfaces->Pecran); + + return ret; } -int Fether(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[],int *Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type,int *Vtour) +enum action_state_t Fether(SURFACES *surfaces,POSITIONS *positions,PERSONNAGES persos[], int Vtourallie,ENNEMIS ennemis[],int Vnbennemis,OBJET *objets,int type) { + enum action_state_t ret = ACTION_CANCELED; + int continuer=1; + SDL_Event event; + int delay=1; + int selection=0; + int soins=0; + int Bdegats=SOINS; + int clan=ALLIE; + + (void) Vtourallie; + if(type==ETHER&&objets->ethers<=0) - return 1; + return ACTION_ERROR; else if(type==ETHERPLUS&&objets->ethersplus<=0) - return 1; - else + return ACTION_ERROR; + + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadreactions,surfaces->Pecran,&positions->Vpositioncadreactions); + while(persos[selection].etat==MORT) + selection++; + Fchangercurseurpersos (surfaces,positions,selection,persos); + while(continuer) { - int continuer=1; - SDL_Event event; - int delay=1; - int selection=0; - int soins=0; - int Bdegats=SOINS; - int clan=ALLIE; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadreactions,surfaces->Pecran,&positions->Vpositioncadreactions); - while(persos[selection].etat==MORT) - selection++; - Fchangercurseurpersos (surfaces,positions,selection,persos); - while(continuer) + SDL_WaitEvent(&event); + switch(event.type) { - SDL_WaitEvent(&event); - switch(event.type) - { - case SDL_KEYDOWN: + case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_a: - delay=0; - continuer = 0; - if(clan==ENNEMI) - { - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); - } - else - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); - SDL_Flip (surfaces->Pecran); - break; - SELECTION_CIBLE() - case SDLK_RETURN: - case SDLK_f: - if(type==ETHER) - soins=10; - else if(type==ETHERPLUS) - soins=40; - if(clan==ENNEMI) - { - if(Bdegats==DEGATS) - ennemis[selection].pm-=soins; - else - ennemis[selection].pm+=soins; - if(ennemis[selection].pm<=0) + delay=0; + continuer = 0; + if(clan==ENNEMI) { - ennemis[selection].pm=0; - ennemis[selection].etat=MORT; - positions->Vpositionmort.x=positions->Vpositionennemis[selection].x+surfaces->Tennemi[selection]->w/2-surfaces->Pmort->w/2; - positions->Vpositionmort.y=positions->Vpositionennemis[selection].y+surfaces->Tennemi[selection]->h/2-surfaces->Pmort->h/2; - SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); } - else if(ennemis[selection].pm>ennemis[selection].pminitiaux) - ennemis[selection].pm=ennemis[selection].pminitiaux; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); - } - else - { - if(Bdegats==DEGATS) - persos[selection].pm-=soins; else - persos[selection].pm+=soins; - if(persos[selection].pm<=0) - { - persos[selection].pm=0; - persos[selection].etat=MORT; - positions->Vpositionmort.x=positions->Vpositionpersos[selection].x+surfaces->Tperso[selection]->w/2-surfaces->Pmort->w/2; - positions->Vpositionmort.y=positions->Vpositionpersos[selection].y+surfaces->Tperso[selection]->h/2-surfaces->Pmort->h/2; - SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); - } - else if(persos[selection].pm>persos[selection].pminitiaux) - persos[selection].pm=persos[selection].pminitiaux; - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); - } - if(Bdegats==DEGATS) - Fafficherdegats (surfaces,positions,soins,clan,selection,persos); - else - Faffichersoins (surfaces,positions,soins,clan,selection,persos); - if(clan==ENNEMI) - { - SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); SDL_Flip (surfaces->Pecran); - } - if (*Vtourallie==2) - { - *Vtourallie=0; - inverse_boolean(*Vtour); - } - else - { - (*Vtourallie)++; - Fblitcoloredselection(surfaces,positions,*Vtourallie,persos); - } - continuer=0; - if(type==ETHER) - objets->ethers--; - else if(type==ETHERPLUS) - objets->ethersplus--; - break; + break; + SELECTION_CIBLE() + case SDLK_RETURN: + case SDLK_f: + if(type==ETHER) + soins=10; + else if(type==ETHERPLUS) + soins=40; + if(clan==ENNEMI) + { + if(Bdegats==DEGATS) + ennemis[selection].pm-=soins; + else + ennemis[selection].pm+=soins; + if(ennemis[selection].pm<=0) + { + ennemis[selection].pm=0; + ennemis[selection].etat=MORT; + positions->Vpositionmort.x=positions->Vpositionennemis[selection].x+surfaces->Tennemi[selection]->w/2-surfaces->Pmort->w/2; + positions->Vpositionmort.y=positions->Vpositionennemis[selection].y+surfaces->Tennemi[selection]->h/2-surfaces->Pmort->h/2; + SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + } + else if(ennemis[selection].pm>ennemis[selection].pminitiaux) + ennemis[selection].pm=ennemis[selection].pminitiaux; + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurennemis,surfaces->Pecran,&positions->Vpositioncurseurennemis); + } + else + { + if(Bdegats==DEGATS) + persos[selection].pm-=soins; + else + persos[selection].pm+=soins; + if(persos[selection].pm<=0) + { + persos[selection].pm=0; + persos[selection].etat=MORT; + positions->Vpositionmort.x=positions->Vpositionpersos[selection].x+surfaces->Tperso[selection]->w/2-surfaces->Pmort->w/2; + positions->Vpositionmort.y=positions->Vpositionpersos[selection].y+surfaces->Tperso[selection]->h/2-surfaces->Pmort->h/2; + SDL_BlitSurface(surfaces->Pmort,NULL,surfaces->Pecran,&positions->Vpositionmort); + } + else if(persos[selection].pm>persos[selection].pminitiaux) + persos[selection].pm=persos[selection].pminitiaux; + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncurseurallies,surfaces->Pecran,&positions->Vpositioncurseurallies); + } + if(Bdegats==DEGATS) + Fafficherdegats (surfaces,positions,soins,clan,selection,persos); + else + Faffichersoins (surfaces,positions,soins,clan,selection,persos); + if(clan==ENNEMI) + { + SDL_BlitSurface (surfaces->Pfondjeu,&positions->Vpositioncadrecible,surfaces->Pecran,&positions->Vpositioncadrecible); + SDL_Flip (surfaces->Pecran); + } + continuer=0; + ret = ACTION_PERFORMED; + if(type==ETHER) + objets->ethers--; + else if(type==ETHERPLUS) + objets->ethersplus--; + break; default: - break; + break; } break; - } } - if (delay) - SDL_Delay(1000); - SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); - SDL_Flip(surfaces->Pecran); - return continuer; } + if (delay) + SDL_Delay(1000); + SDL_BlitSurface(surfaces->Pfondjeu,&positions->Vpositiondegats,surfaces->Pecran,&positions->Vpositiondegats); + SDL_Flip(surfaces->Pecran); + + return ret; } |