Newer
Older
Xavier CORBILLON
committed
#ifndef OBJET_H
hilnius
committed
#define OBJET_H
hilnius
committed
#include "position.h"
#include "angle.h"
hilnius
committed
#include <QPainter>
#include </usr/local/include/Box2D/Box2D.h>
hilnius
committed
Xavier CORBILLON
committed
/**@brief Classe permettant de gérer les différents objets pouvant être déplacé sur la table (pièce, lingot) */
class Objet
{
hilnius
committed
public:
/**@enum Type */
/**@brief Énumération permettant de classifier les différents objets */
enum Type
{
SANDCUBE, /*!< Représente un cube de chateau de sable*/
SANDCONE, /*!< Représente un cone de chateau de sable*/
SANDCYLINDER, /*!< Représente un cylinder de chateau de sable*/
PORTE, /*!< Représente la porte des cabine de plage*/
MER, /*!< Représente la mer*/
POISSON, /*!< Représente le poisson*/
FILET/*!< Représente le filet*/
hilnius
committed
};
/**@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());
Xavier CORBILLON
committed
/**@brief Destructeur de la classe */
hilnius
committed
~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();
Xavier CORBILLON
committed
void moveOutOfField();
Type getType();
bool isNear(Position p, Distance radius = 0.);
Xavier CORBILLON
committed
protected:
hilnius
committed
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 */
b2World* world;
hilnius
committed
/**@brief Couleur de l'objet */
QColor p_color;
Xavier CORBILLON
committed
};
hilnius
committed
Xavier CORBILLON
committed
#endif // OBJET_H