Skip to content
objet.h 2.66 KiB
Newer Older
#include "position.h"
#include "angle.h"
#include </usr/local/include/Box2D/Box2D.h>
/**@brief Classe permettant de gérer les différents objets pouvant être déplacé sur la table (pièce, lingot) */
class Objet
{
    public:
        /**@enum Type */
        /**@brief Énumération permettant de classifier les différents objets */
        enum Type
        {
Victor Dubois's avatar
Victor Dubois committed
            SHELL, /*!< Représente un coquillage*/
ZHAO Fei's avatar
ZHAO Fei committed
            SANDCUBE,
            SANDCUBE1,/*!< Représente un cube de chateau de sable*/
            // SANDCONE, /*!< Représente un cone de chateau de sable*/
ZHAO Fei's avatar
ZHAO Fei committed
            SANDCYLINDER, /*!< Représente un cylinder de chateau de sable*/
ZHAO Fei's avatar
ZHAO Fei committed
            PORTE /*!< Représente la porte des cabine de plage*/
            //MER, /*!< Représente la mer*/
            //POISSON, /*!< Représente le poisson*/
            //FILET/*!< Représente le filet*/
        };
        /**@brief Constructeur de la classe permettant de construire directement un objet de type type à la position p avec pour angle initial theta. */
        /**@param world Pointer vers le b2World dans lequel va être créé notre objet*/
        /**@param P Position initial de l'objet*/
        /**@param type Type de l'objet créé */
        /**@param theta Angle initial de l'objet crée en radian */
		Objet(b2World & world, Position p, Type type, Angle theta = 0., QColor color = QColor());
        ~Objet();
        /**@brief Permet de dessiner l'objet à l'écran */
        /**@param pa Pointeur vers le QPainter qui dessine à l'écran */
        void paint(QPainter & pa);
        /**@brief Met à jour la position de l'objet sur la table ainsi que la ses vitesses */
        void updatePos();
        Position getPosition();
        Type getType();
        bool isNear(Position p, Distance radius = 0.);
    private:
        /**@brief Contient la position du centre de l'objet. */
        Position p;
        /**@brief Angle actuel de l'objet par rapport au repert de la table (utile seulement pour les objets de type goldBar) */
        Angle theta;
        /**@brief Contient le type de l'objet*/
        Type type;
        /**@brief Pointeur vers un objet de type b2Body afin de représenter l'objet par Box2D*/
        b2Body* body;
        /**@brief Pointeur vers l'objet de type b2World dans lequel notre objet est définie */