void Projectile::draw(SDL_Surface* gpScreen) { if (id == 3 && (gpJeu->getJoueur()->getTypeAnim()==TOUCHE || gpJeu->getJoueur()->getTypeAnim()==CHUTE)) vie = 0; if (id > 0 && vie) { int phg[2]; phg[0] = gpJeu->getPhg(0); phg[1] = gpJeu->getPhg(1); // déplacement if (vie && !gpJeu->getStop() && vitesse) { for (int i=0; i<vitesse; i++) { if (etape == 1) { switch (direction) { case N : move(0,-1); break; case S : move(0,1); break; case O : move(-1,0); break; case E : move(1,0); break; } }else { switch (direction) { case S : move(0,-1); break; case N : move(0,1); break; case E : move(-1,0); break; case O : move(1,0); break; } } if (vie <= 0) break; if (hauteur==0 || (id>=21 && id<=26)) attaque(); } } //dessin if (vie) { if ((hauteur==0 || (id>=21 && id<=26)) && !vitesse) attaque(); SDL_Rect src; SDL_Rect dst; src.h = h;src.w = w; dst.x = x-phg[0];dst.y = y-phg[1]; src.x=w*direction;src.y=h*anim; if ((id == 1 || id == 2) && anim > 3) src.y=h*(anim-2); if (id == 4) { src.y=8; if (anim < 22) src.x=0; else src.x=(anim-21)*16; if (id == 4 && anim == 30) src.y=0; } if (id == 5) src.x+=51; if (id == 6) src.x=34; if (id == 7) {src.y=0; if (anim<4) src.x=w*(anim%2); else src.x=32;} if (id == 8) { src.y = 0; dst.y = y - phg[1]; src.x = 0; dst.x = x - phg[0]-anim*4-8; SDL_BlitSurface(image, &src, gpScreen, &dst); src.x = 16; dst.x = x - phg[0]+anim*4+8; } if (id >=9 && id <=12) { src.x=w*anim; src.y=h*(id-9); } if (id ==15 || id == 16) {src.x=w*anim; src.y=0;} if (id >=21 && id <=26) { if (!anim) { src.x=112; src.y=(id-21)*16;} if (anim==1) { src.x=64; src.y=74;} if (anim==2) { src.x=56; src.y=90;} if (anim>2) { src.x=80; src.y=74;} } SDL_BlitSurface(image, &src, gpScreen, &dst); if (id == 3) dessinChaine(gpScreen); if (id == 6) dessinTrainee(gpScreen); //anim if(SDL_GetTicks() > lastAnimTime + vanim && !gpJeu->getStop()) { lastAnimTime = SDL_GetTicks(); anim++; if (anim > max) { anim = 0; if ((id == 1 || id == 2 || id == 4 || id >= 7/* || id == 8*/) && max > 0) vie = 0; if (id == 7 && gpJeu->getJoueur()->getTypeAnim()==LANTERNE) gpJeu->getJoueur()->setTypeAnim(AUCUNE); } if (id == 4 && anim == 30) { w=32; h=32; zx=0; zy=0; zw=32; zh=32; x-=8; y-=8; gpJeu->getAudio()->playSound(16); } if (id >= 21 && id <=26 && anim == 2) { w=24; h=24; zx=0; zy=0; zw=24; zh=24; x-=4; y-=4; } if (id >= 21 && id <=26 && anim == 3) { w=32; h=32; zx=0; zy=0; zw=32; zh=32; x-=4; y-=4; } } } } if (suivant != NULL) if (((Projectile*)suivant)->vie == 0){ if(((Projectile*)suivant)->image) SDL_FreeSurface(((Projectile*)suivant)->image); ((Projectile*)suivant)->image = 0; enleve(suivant); } if (suivant != NULL) ((Projectile*)suivant)->draw(gpScreen); }
void Projectile::draw(SDL_Surface* gpScreen) { if (id == 3 && (gpJeu->getJoueur()->getTypeAnim()==TOUCHE || gpJeu->getJoueur()->getTypeAnim()==CHUTE)) vie = 0; if (id > 0 && vie) { int phg[2]; phg[0] = gpJeu->getPhg(0); phg[1] = gpJeu->getPhg(1); // déplacement if (vie && !gpJeu->getStop() && vitesse) { for (int i=0; i<vitesse; i++) { if (etape == 1) { switch (direction) { case N : move(0,-1); break; case S : move(0,1); break; case O : move(-1,0); break; case E : move(1,0); break; } }else { switch (direction) { case S : move(0,-1); break; case N : move(0,1); break; case E : move(-1,0); break; case O : move(1,0); break; } } if (vie <= 0) break; if (hauteur==0 || (id>=21 && id<=27)) attaque(); } } //dessin if (vie) { if ((hauteur==0 || ((id>=21 && id<=29) || id==130)) && !vitesse) attaque(); SDL_Rect src; SDL_Rect dst; src.h = h;src.w = w; dst.x = x-phg[0];dst.y = y-phg[1]; src.x=w*direction;src.y=h*anim; if ((id == 1 || id == 2) && anim > 3) src.y=h*(anim-2); if (id == 4 || id == 140) { if (id == 140) anim=30; src.y=8; if (anim < 22) src.x=0; else src.x=(anim-21)*16; if (anim == 30) src.y=0; if (id == 140) anim=0; } if (id == 5) src.x+=51; if (id == 6) src.x=34; if (id == 7) {src.y=0; if (anim<4) src.x=w*(anim%2); else src.x=32;} if (id == 8) { src.y = 0; dst.y = y - phg[1]; src.x = 0; dst.x = x - phg[0]-anim*4-8; SDL_BlitSurface(image, &src, gpScreen, &dst); src.x = 16; dst.x = x - phg[0]+anim*4+8; } if (id >=9 && id <=12) { src.x=w*anim; src.y=h*(id-9); } if (id==19 && !gpJeu->getJoueur()->getGel() && max<2) {anim=1; max=2;} if (id ==15 || id == 16 || id == 17 || id == 19 || id == 20 || id == 40 || id == 41) {src.x=w*anim; src.y=0;} if (id == 41 && max == 1) src.x+=96; if ((id >=21 && id <=29) || id==130) { if (!anim) { src.x=112; src.y=(id-21)*16; if (id==29)src.y-=16; if (id==130) {src.x=96; src.y=112;} } if (anim==1) { src.x=64; src.y=74;} if (anim==2) { src.x=56; src.y=90;} if (anim>2) { src.x=80; src.y=74;} } if (id == 42) {src.x=0; src.y=0; src.w=24; src.h=26;} SDL_BlitSurface(image, &src, gpScreen, &dst); if (id == 3) dessinChaine(gpScreen); if (id == 6) dessinTrainee(gpScreen); //anim if(SDL_GetTicks() > lastAnimTime + vanim && !gpJeu->getStop()) { lastAnimTime = SDL_GetTicks(); anim++; if (anim > max) { anim = 0; if ((id == 1 || id == 2 || id == 4 || (id >= 7 && id <40) || id == 19 || id == 130 || id == 140) && (max > 0 || id == 140)) { vie = 0; //anim Ganondorf se relève if (id == 15 && gpJeu->getZone() == 57 && gpJeu->getJoueur()->getEnnemi(50) && gpJeu->getMonde()->regionValue(0)==160*16 && gpJeu->getMonde()->regionValue(1)==15*16 && y < 20*16) { Ennemi* enn = gpJeu->getEnnemi()->getSuivant(); while (enn != NULL) { if (enn->getEnnId() == 89) enn->releve(); enn = enn->getSuivant(); } gpJeu->ecrit(1098); } } if (id == 7 && gpJeu->getJoueur()->getTypeAnim()==LANTERNE) gpJeu->getJoueur()->setTypeAnim(AUCUNE); if (id == 41) {max=1; vanim=480;} } if (id == 4 && anim == 30) { w=32; h=32; zx=0; zy=0; zw=32; zh=32; x-=8; y-=8; gpJeu->getAudio()->playSound(16); } if (((id >= 21 && id <=29) || id==130) && anim == 2) { w=24; h=24; zx=0; zy=0; zw=24; zh=24; x-=4; y-=4; } if (((id >= 21 && id <=29) || id==130) && anim == 3) { w=32; h=32; zx=0; zy=0; zw=32; zh=32; x-=4; y-=4; } } } } if (suivant != NULL) if (((Projectile*)suivant)->vie == 0) enleve(suivant); if (suivant != NULL) ((Projectile*)suivant)->draw(gpScreen); }