#ifndef ARME_H_INCLUDED
#define ARME_H_INCLUDED

//Notes temporaires: La gérance du clic d'icone se fera par le joueur.
/*La classe arme permet de gerer tous
les attributs de l'arme, y compris le viseur associé.*/

#include <iostream>
#include <SDL/SDL.h>
#include "menuFire.h"

class Arme
{
	public:
	Arme(SDL_Surface* ecran,unsigned int IDarme,int xCalibreExpl, int yCalibreExpl, int recul);
	~Arme();
	void afficher(bool tir, SDL_Rect* positionViseur);
	void tir();
    unsigned int getTypeWeapon();
	//void recharger();

	protected:
	SDL_Surface* m_ecran;//Pour blits
	const int m_IDarme;//Permet d'ajuster la position de l'icone, et determinant facilement l'arme. Note:0=Baroudeur, 1=Usiane, 2=TriPhaseur
    SDL_Surface* m_arme;//Image de l'arme
    SDL_Surface* m_viseur;//Image du viseur
    SDL_Surface* m_tir;//Image de l'explosion lors du tir
    SDL_Surface* m_impact;//Image de l'impact
    const int m_recul;
	const int m_xCalibreExpl;
	const int m_yCalibreExpl;

    int m_munitionsRestantes;
	//int m_tempsRecharge const;//Afaire
	//int m_ResteTempsRecharge;//Afaire
};

/*Description:
Permet de creer l'interface du joueur.
*/

class Joueur
{
    public:
    Joueur(SDL_Surface* ecran);
    ~Joueur();
    void afficher();
    void setArme(std::string choixArme);
    void giveMousePosition(int x,int y);
    void tir();
    void recevoirDegats(int degats);
    bool estVivant();
    unsigned int getTypeWeapon();

    protected:
    //Ecran en attribut pour les blits
    SDL_Surface* m_ecran;
    //Nombre de boucles depuis le début du programme
    int m_armeCycle;
    int m_variableVie;
    SDL_Rect m_positionViseur;
    SDL_Rect m_positionInterVie;
    SDL_Surface* m_interVie;
    SDL_Surface* m_jaugeVie[60];
    bool m_tirInstant;
    Arme* m_armeSelect;
    Arme* m_armeOne;
    Arme* m_armeTwo;
    Arme* m_armeThree;
};

#endif // ARME_H_INCLUDED
