/*====================ÉCOLE POLYTECHNIQUE DE MONTRÉAL============================

	NOM DU FICHIER :CObjet.h

	DESCRIPTION :	Déclaration des fonctions de la classe virtuelle des objets

	AUTEUR : Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

	DATE DE CRÉATION : 2004-3-16

	MISES À JOUR :

===============================================================================*/
#ifndef COBJET_H
#define COBJET_H

#include "CBalle.h"

#define TAILLE_TUILE 0.5f
#define PROF_TROU (0.1f/TAILLE_TUILE)
//Déplacement sécuritaire pour éviter du "flickering" entre le terrain et les objets
#define SAFE_DISP (0.01f/TAILLE_TUILE)

enum type_jeuobjet { JEUOBJET_NONE, 
		     JEUOBJET_TROU, 
		     JEUOBJET_DEPART_UP,
		     JEUOBJET_DEPART_RIGHT, 
		     JEUOBJET_DEPART_DOWN,
		     JEUOBJET_DEPART_LEFT, 
		     JEUOBJET_TRAPPE,
		     JEUOBJET_TROUDEAU,
		     JEUOBJET_BANDE_N,
		     JEUOBJET_BANDE_NE,
		     JEUOBJET_BANDE_E,
		     JEUOBJET_BANDE_SE,
		     JEUOBJET_END };

class CObjet {
 protected:
	 type_jeuobjet Type;
	CVector3f Pos;
	
    public:
	CObjet(CVector3f pos, type_jeuobjet typo);
	virtual ~CObjet();

	virtual void AfficheGL() const = 0;
	virtual bool isCollision(CBalle *balle) const = 0;
	virtual void UpdateAnimations() const = 0;
	
	type_jeuobjet GetType() { return Type; }
	CVector3f getPos() { return Pos; }

	static CObjet* CreerObjet(type_jeuobjet Type, const CVector3f& Pos);
};
#endif
