|
@@ -1,201 +1,201 @@
|
|
|
-#include "Joueur.h"
|
|
|
-
|
|
|
-Arme::Arme(SDL_Surface* ecran,unsigned int IDarme,int xCalibreExpl,int yCalibreExpl, int recul) : m_ecran(ecran),m_xCalibreExpl(xCalibreExpl),m_yCalibreExpl(yCalibreExpl),m_IDarme(IDarme),m_recul(recul)
|
|
|
-{//Constructeur
|
|
|
-
|
|
|
- if (IDarme==0)
|
|
|
- {
|
|
|
- //Assignation necessaire au baroudeur
|
|
|
- m_viseur=SDL_LoadBMP("Images/ViseurBaroudeur.bmp");
|
|
|
- m_arme=SDL_LoadBMP("Images/Baroudeur.bmp");
|
|
|
- m_tir=SDL_LoadBMP("Images/TirBaroudeur.bmp");
|
|
|
- m_impact=SDL_LoadBMP("Images/ImpactBaroudeur.bmp");
|
|
|
- m_munitionsRestantes=10;
|
|
|
- }
|
|
|
- else if (IDarme==1)
|
|
|
- {
|
|
|
- //Assignation necessaire à l'Usiane
|
|
|
- m_viseur=SDL_LoadBMP("Images/ViseurUsiane.bmp");
|
|
|
- m_arme=SDL_LoadBMP("Images/Usiane.bmp");
|
|
|
- m_tir=SDL_LoadBMP("Images/TirUsiane.bmp");
|
|
|
- m_impact=SDL_LoadBMP("Images/ImpactUsiane.bmp");
|
|
|
- m_munitionsRestantes=25;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //Assignation néecessaire au triphaseur
|
|
|
- m_viseur=SDL_LoadBMP("Images/ViseurTriphaseur.bmp");
|
|
|
- m_arme=SDL_LoadBMP("Images/Triphaseur.bmp");
|
|
|
- m_tir=SDL_LoadBMP("Images/TirTriphaseur.bmp");
|
|
|
- m_impact=SDL_LoadBMP("Images/ImpactTriphaseur.bmp");
|
|
|
- m_munitionsRestantes=125;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-Arme::~Arme()
|
|
|
-{
|
|
|
- SDL_FreeSurface(m_viseur);
|
|
|
- SDL_FreeSurface(m_arme);
|
|
|
- SDL_FreeSurface(m_tir);
|
|
|
- SDL_FreeSurface(m_impact);
|
|
|
-}
|
|
|
-
|
|
|
-void Arme::afficher(bool tir, SDL_Rect* positionViseur)//Test du tir pris en charge par le joueur proprio
|
|
|
-{
|
|
|
- //Traitement transparence
|
|
|
- SDL_SetColorKey(m_viseur,SDL_SRCCOLORKEY,SDL_MapRGB(m_viseur->format,255,255,255));//On met le fond (blanc) en invisible !
|
|
|
- SDL_SetColorKey(m_tir,SDL_SRCCOLORKEY,SDL_MapRGB(m_tir->format,255,255,255));
|
|
|
- SDL_SetColorKey(m_impact,SDL_SRCCOLORKEY,SDL_MapRGB(m_impact->format,255,255,255));
|
|
|
- SDL_SetColorKey(m_arme,SDL_SRCCOLORKEY,SDL_MapRGB(m_arme->format,255,255,255));
|
|
|
- SDL_SetAlpha(m_viseur,SDL_SRCALPHA,128);//On met le viseur en translucide !
|
|
|
- SDL_SetAlpha(m_impact,SDL_SRCALPHA,128);
|
|
|
- //Réglage de position
|
|
|
- SDL_Rect positionTir;
|
|
|
- SDL_Rect positionBrasDroit;
|
|
|
- positionBrasDroit.x=430+((positionViseur->x-positionViseur->x%10)/10);//420
|
|
|
- positionBrasDroit.y=265+((positionViseur->y-positionViseur->y%20)/20);//260
|
|
|
- if (tir && m_munitionsRestantes>0)
|
|
|
- {
|
|
|
- //Calculs
|
|
|
- SDL_Rect positionImpact;
|
|
|
- positionTir.x=positionBrasDroit.x+m_xCalibreExpl;//Affichage de l'impact
|
|
|
- positionTir.y=positionBrasDroit.y+m_yCalibreExpl;
|
|
|
- positionBrasDroit.x=positionBrasDroit.x+m_recul;//Recul
|
|
|
- positionBrasDroit.y=positionBrasDroit.y+m_recul;
|
|
|
- positionImpact.x=positionViseur->x+16;//Centre sur le viseur
|
|
|
- positionImpact.y=positionViseur->y+16;
|
|
|
- //Affichage de tir
|
|
|
- SDL_BlitSurface(m_impact,0,m_ecran,&positionImpact);
|
|
|
- SDL_BlitSurface(m_tir,0,m_ecran,&positionTir);//Collage tir
|
|
|
- }
|
|
|
- //Affichage défaut
|
|
|
- SDL_BlitSurface(m_arme,0,m_ecran,&positionBrasDroit);
|
|
|
- SDL_BlitSurface(m_viseur,0,m_ecran,positionViseur);
|
|
|
-}
|
|
|
-
|
|
|
-void Arme::tir()
|
|
|
-{
|
|
|
- //Retrait de muntion
|
|
|
- m_munitionsRestantes--;
|
|
|
-}
|
|
|
-
|
|
|
-unsigned int Arme::getTypeWeapon()
|
|
|
-{
|
|
|
- return m_IDarme;
|
|
|
-}
|
|
|
-
|
|
|
-/*void Arme::recharger
|
|
|
-{
|
|
|
- //Pleins de trucs interessants...
|
|
|
-}*/
|
|
|
-
|
|
|
-
|
|
|
-////////////////////////////////////////////////////////////
|
|
|
-///////////////////////Changement de def////////////////////
|
|
|
-////////////////////////////////////////////////////////////
|
|
|
-
|
|
|
-
|
|
|
-Joueur::Joueur(SDL_Surface* ecran):m_ecran(ecran),m_armeCycle(0),m_tirInstant(false)
|
|
|
-{
|
|
|
- m_armeOne=new Arme(ecran,0,80,85,5);
|
|
|
- m_armeTwo=new Arme(ecran,1,50,60,2);
|
|
|
- m_armeThree=new Arme(ecran,2,70,60,0);
|
|
|
-
|
|
|
- m_interVie=SDL_LoadBMP("Images/InterVie.bmp");
|
|
|
- m_positionInterVie.x=420;
|
|
|
- m_positionInterVie.y=403;
|
|
|
- for (int i(0);i<60;i++)
|
|
|
- {
|
|
|
- m_jaugeVie[i]=SDL_CreateRGBSurface(SDL_HWSURFACE,29,1,32,0,0,0,0);
|
|
|
- SDL_FillRect(m_jaugeVie[i],NULL,SDL_MapRGB(m_ecran->format,255,255-2*i,0));
|
|
|
- }
|
|
|
- m_variableVie=60;
|
|
|
-}
|
|
|
-
|
|
|
-Joueur::~Joueur()//Destructeur
|
|
|
-{
|
|
|
- delete(m_armeOne);
|
|
|
- delete(m_armeTwo);
|
|
|
- delete(m_armeThree);
|
|
|
- SDL_FreeSurface(m_interVie);
|
|
|
-}
|
|
|
-
|
|
|
-void Joueur::afficher()
|
|
|
-{
|
|
|
-
|
|
|
- if (m_armeCycle<4)//Si un tir vient d'être effectué
|
|
|
- {
|
|
|
- m_tirInstant=true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- m_tirInstant=false;
|
|
|
- }
|
|
|
- m_armeCycle++;
|
|
|
- SDL_BlitSurface(m_interVie,0,m_ecran,&m_positionInterVie);
|
|
|
-
|
|
|
- SDL_Rect positionJaugeVie;
|
|
|
- positionJaugeVie.x=429;//420+9
|
|
|
- positionJaugeVie.y=412;//403+9
|
|
|
- for (int i(0); i<m_variableVie; i++)
|
|
|
- {
|
|
|
- positionJaugeVie.y=472-i;//412+60
|
|
|
- SDL_BlitSurface(m_jaugeVie[i],NULL,m_ecran,&positionJaugeVie);
|
|
|
- }
|
|
|
- m_armeSelect->afficher(m_tirInstant,&m_positionViseur);
|
|
|
-}
|
|
|
-
|
|
|
-void Joueur::setArme(std::string choixArme)
|
|
|
-{
|
|
|
- if (choixArme=="Baroudeur")
|
|
|
- {
|
|
|
- m_armeSelect=m_armeOne;
|
|
|
- }
|
|
|
- else if (choixArme=="Usiane")
|
|
|
- {
|
|
|
- m_armeSelect=m_armeTwo;
|
|
|
- }
|
|
|
- else if (choixArme=="Triphaseur")
|
|
|
- {
|
|
|
- m_armeSelect=m_armeThree;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void Joueur::giveMousePosition(int x, int y)
|
|
|
-{
|
|
|
- m_positionViseur.x=x-32;
|
|
|
- m_positionViseur.y=y-32;
|
|
|
-}
|
|
|
-
|
|
|
-void Joueur::tir()
|
|
|
-{
|
|
|
- m_armeCycle=0;
|
|
|
- m_armeSelect->tir();
|
|
|
-}
|
|
|
-
|
|
|
-void Joueur::recevoirDegats(int degats)
|
|
|
-{
|
|
|
- m_variableVie=m_variableVie-degats;
|
|
|
- if (m_variableVie<0)
|
|
|
- {
|
|
|
- m_variableVie=0;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-bool Joueur::estVivant()
|
|
|
-{
|
|
|
- if (m_variableVie>0)
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-unsigned int Joueur::getTypeWeapon()
|
|
|
-{
|
|
|
- return m_armeSelect->getTypeWeapon();
|
|
|
-}
|
|
|
-
|
|
|
+#include "Joueur.h"
|
|
|
+
|
|
|
+Arme::Arme(SDL_Surface* ecran,unsigned int IDarme,int xCalibreExpl,int yCalibreExpl, int recul) : m_ecran(ecran),m_xCalibreExpl(xCalibreExpl),m_yCalibreExpl(yCalibreExpl),m_IDarme(IDarme),m_recul(recul)
|
|
|
+{//Constructeur
|
|
|
+
|
|
|
+ if (IDarme==0)
|
|
|
+ {
|
|
|
+ //Assignation necessaire au baroudeur
|
|
|
+ m_viseur=SDL_LoadBMP("Images/ViseurBaroudeur.bmp");
|
|
|
+ m_arme=SDL_LoadBMP("Images/Baroudeur.bmp");
|
|
|
+ m_tir=SDL_LoadBMP("Images/TirBaroudeur.bmp");
|
|
|
+ m_impact=SDL_LoadBMP("Images/ImpactBaroudeur.bmp");
|
|
|
+ m_munitionsRestantes=10;
|
|
|
+ }
|
|
|
+ else if (IDarme==1)
|
|
|
+ {
|
|
|
+ //Assignation necessaire à l'Usiane
|
|
|
+ m_viseur=SDL_LoadBMP("Images/ViseurUsiane.bmp");
|
|
|
+ m_arme=SDL_LoadBMP("Images/Usiane.bmp");
|
|
|
+ m_tir=SDL_LoadBMP("Images/TirUsiane.bmp");
|
|
|
+ m_impact=SDL_LoadBMP("Images/ImpactUsiane.bmp");
|
|
|
+ m_munitionsRestantes=25;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //Assignation néecessaire au triphaseur
|
|
|
+ m_viseur=SDL_LoadBMP("Images/ViseurTriphaseur.bmp");
|
|
|
+ m_arme=SDL_LoadBMP("Images/Triphaseur.bmp");
|
|
|
+ m_tir=SDL_LoadBMP("Images/TirTriphaseur.bmp");
|
|
|
+ m_impact=SDL_LoadBMP("Images/ImpactTriphaseur.bmp");
|
|
|
+ m_munitionsRestantes=125;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+Arme::~Arme()
|
|
|
+{
|
|
|
+ SDL_FreeSurface(m_viseur);
|
|
|
+ SDL_FreeSurface(m_arme);
|
|
|
+ SDL_FreeSurface(m_tir);
|
|
|
+ SDL_FreeSurface(m_impact);
|
|
|
+}
|
|
|
+
|
|
|
+void Arme::afficher(bool tir, SDL_Rect* positionViseur)//Test du tir pris en charge par le joueur proprio
|
|
|
+{
|
|
|
+ //Traitement transparence
|
|
|
+ SDL_SetColorKey(m_viseur,SDL_SRCCOLORKEY,SDL_MapRGB(m_viseur->format,255,255,255));//On met le fond (blanc) en invisible !
|
|
|
+ SDL_SetColorKey(m_tir,SDL_SRCCOLORKEY,SDL_MapRGB(m_tir->format,255,255,255));
|
|
|
+ SDL_SetColorKey(m_impact,SDL_SRCCOLORKEY,SDL_MapRGB(m_impact->format,255,255,255));
|
|
|
+ SDL_SetColorKey(m_arme,SDL_SRCCOLORKEY,SDL_MapRGB(m_arme->format,255,255,255));
|
|
|
+ SDL_SetAlpha(m_viseur,SDL_SRCALPHA,128);//On met le viseur en translucide !
|
|
|
+ SDL_SetAlpha(m_impact,SDL_SRCALPHA,128);
|
|
|
+ //Réglage de position
|
|
|
+ SDL_Rect positionTir;
|
|
|
+ SDL_Rect positionBrasDroit;
|
|
|
+ positionBrasDroit.x=430+((positionViseur->x-positionViseur->x%10)/10);//420
|
|
|
+ positionBrasDroit.y=265+((positionViseur->y-positionViseur->y%20)/20);//260
|
|
|
+ if (tir && m_munitionsRestantes>0)
|
|
|
+ {
|
|
|
+ //Calculs
|
|
|
+ SDL_Rect positionImpact;
|
|
|
+ positionTir.x=positionBrasDroit.x+m_xCalibreExpl;//Affichage de l'impact
|
|
|
+ positionTir.y=positionBrasDroit.y+m_yCalibreExpl;
|
|
|
+ positionBrasDroit.x=positionBrasDroit.x+m_recul;//Recul
|
|
|
+ positionBrasDroit.y=positionBrasDroit.y+m_recul;
|
|
|
+ positionImpact.x=positionViseur->x+16;//Centre sur le viseur
|
|
|
+ positionImpact.y=positionViseur->y+16;
|
|
|
+ //Affichage de tir
|
|
|
+ SDL_BlitSurface(m_impact,0,m_ecran,&positionImpact);
|
|
|
+ SDL_BlitSurface(m_tir,0,m_ecran,&positionTir);//Collage tir
|
|
|
+ }
|
|
|
+ //Affichage défaut
|
|
|
+ SDL_BlitSurface(m_arme,0,m_ecran,&positionBrasDroit);
|
|
|
+ SDL_BlitSurface(m_viseur,0,m_ecran,positionViseur);
|
|
|
+}
|
|
|
+
|
|
|
+void Arme::tir()
|
|
|
+{
|
|
|
+ //Retrait de muntion
|
|
|
+ m_munitionsRestantes--;
|
|
|
+}
|
|
|
+
|
|
|
+unsigned int Arme::getTypeWeapon()
|
|
|
+{
|
|
|
+ return m_IDarme;
|
|
|
+}
|
|
|
+
|
|
|
+/*void Arme::recharger
|
|
|
+{
|
|
|
+ //Pleins de trucs interessants...
|
|
|
+}*/
|
|
|
+
|
|
|
+
|
|
|
+////////////////////////////////////////////////////////////
|
|
|
+///////////////////////Changement de def////////////////////
|
|
|
+////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+
|
|
|
+Joueur::Joueur(SDL_Surface* ecran):m_ecran(ecran),m_armeCycle(0),m_tirInstant(false)
|
|
|
+{
|
|
|
+ m_armeOne=new Arme(ecran,0,80,85,5);
|
|
|
+ m_armeTwo=new Arme(ecran,1,50,60,2);
|
|
|
+ m_armeThree=new Arme(ecran,2,70,60,0);
|
|
|
+
|
|
|
+ m_interVie=SDL_LoadBMP("Images/InterVie.bmp");
|
|
|
+ m_positionInterVie.x=420;
|
|
|
+ m_positionInterVie.y=403;
|
|
|
+ for (int i(0);i<60;i++)
|
|
|
+ {
|
|
|
+ m_jaugeVie[i]=SDL_CreateRGBSurface(SDL_HWSURFACE,29,1,32,0,0,0,0);
|
|
|
+ SDL_FillRect(m_jaugeVie[i],NULL,SDL_MapRGB(m_ecran->format,255,255-2*i,0));
|
|
|
+ }
|
|
|
+ m_variableVie=60;
|
|
|
+}
|
|
|
+
|
|
|
+Joueur::~Joueur()//Destructeur
|
|
|
+{
|
|
|
+ delete(m_armeOne);
|
|
|
+ delete(m_armeTwo);
|
|
|
+ delete(m_armeThree);
|
|
|
+ SDL_FreeSurface(m_interVie);
|
|
|
+}
|
|
|
+
|
|
|
+void Joueur::afficher()
|
|
|
+{
|
|
|
+
|
|
|
+ if (m_armeCycle<4)//Si un tir vient d'être effectué
|
|
|
+ {
|
|
|
+ m_tirInstant=true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_tirInstant=false;
|
|
|
+ }
|
|
|
+ m_armeCycle++;
|
|
|
+ SDL_BlitSurface(m_interVie,0,m_ecran,&m_positionInterVie);
|
|
|
+
|
|
|
+ SDL_Rect positionJaugeVie;
|
|
|
+ positionJaugeVie.x=429;//420+9
|
|
|
+ positionJaugeVie.y=412;//403+9
|
|
|
+ for (int i(0); i<m_variableVie; i++)
|
|
|
+ {
|
|
|
+ positionJaugeVie.y=472-i;//412+60
|
|
|
+ SDL_BlitSurface(m_jaugeVie[i],NULL,m_ecran,&positionJaugeVie);
|
|
|
+ }
|
|
|
+ m_armeSelect->afficher(m_tirInstant,&m_positionViseur);
|
|
|
+}
|
|
|
+
|
|
|
+void Joueur::setArme(std::string choixArme)
|
|
|
+{
|
|
|
+ if (choixArme=="Baroudeur")
|
|
|
+ {
|
|
|
+ m_armeSelect=m_armeOne;
|
|
|
+ }
|
|
|
+ else if (choixArme=="Usiane")
|
|
|
+ {
|
|
|
+ m_armeSelect=m_armeTwo;
|
|
|
+ }
|
|
|
+ else if (choixArme=="Triphaseur")
|
|
|
+ {
|
|
|
+ m_armeSelect=m_armeThree;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void Joueur::giveMousePosition(int x, int y)
|
|
|
+{
|
|
|
+ m_positionViseur.x=x-32;
|
|
|
+ m_positionViseur.y=y-32;
|
|
|
+}
|
|
|
+
|
|
|
+void Joueur::tir()
|
|
|
+{
|
|
|
+ m_armeCycle=0;
|
|
|
+ m_armeSelect->tir();
|
|
|
+}
|
|
|
+
|
|
|
+void Joueur::recevoirDegats(int degats)
|
|
|
+{
|
|
|
+ m_variableVie=m_variableVie-degats;
|
|
|
+ if (m_variableVie<0)
|
|
|
+ {
|
|
|
+ m_variableVie=0;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+bool Joueur::estVivant()
|
|
|
+{
|
|
|
+ if (m_variableVie>0)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+unsigned int Joueur::getTypeWeapon()
|
|
|
+{
|
|
|
+ return m_armeSelect->getTypeWeapon();
|
|
|
+}
|
|
|
+
|