#ifndef ARMES_GEST_H #define ARMES_GEST_H #include "CaisseArme.h" #include "../Structures/SpriteLoader.h" #include #include // Random // Armes de rang 1 #include "Modeles/Shotgun.h" #include "Modeles/Gun.h" #include "Modeles/Fusil.h" // Armes de rang 2 #include "Modeles/Usiane.h" #include "Modeles/Scatter.h" #include "Modeles/Baroudeur.h" // Armes de rang 3 #include "Modeles/Sulfateuse.h" #include "Modeles/Triphaseur.h" #include "Modeles/Bomber.h" class Craft; // Permet de stocker une combinaison class Armes_Gest { public: Armes_Gest( SpriteLoader* sprites ); virtual ~Armes_Gest(); SDL_Surface* getImg( WeaponType model ) const; // Permet au perso d'obtenir la surface associée à l'arme void allDisplay(const Vec &lookAt, SDL_Surface* screen); void drop( Vec pos, Arme* weapon ); Arme* saisir( Vec pos ); // Si une arme posée est à portée, return ptr. Sin return 0. Arme* crafting( Arme* paire[2], Tirs_Gest* tirsGest ); // Si la combinaison existe, delete les deux armes et créé une nouvelle. Sinon return 0x0. Arme* takeWeapon( WeaponType model, Tirs_Gest* tirsGest ) const; // Créé une nouvelle arme à partir de son nom de modele Arme* startWeapon( Tirs_Gest* tirsGest ) const; // Octroie une arme de rang 1 protected: std::list< CaisseArme* > m_posees; // Stock des armes posées std::list< CaisseArme* >::iterator m_itList; // Itérateur list std::map< Craft, WeaponType > m_crafts; // Stock des crafts possibles std::map< Craft, WeaponType >::iterator m_itMap; // Itérateur map SDL_Surface* m_armeImg[ NB_MODELS ]; // Image de chaque arme }; class Craft { public: Craft(); Craft( WeaponType a, WeaponType b ); ~Craft(); void debugCout() const; bool operator<( const Craft& a) const; private: WeaponType m_a; WeaponType m_b; }; #endif // ARMES_GEST_H