#ifndef GLOBALE_H
#define GLOBALE_H

#define MAX_X				8			// Nombre de cubes de la boîte en x
#define MAX_Y				8			// Nombre de cubes de la boîte en y
#define MAX_Z				20			// Nombre de cubes de la boîte en z

// Dépendent des autres valeurs (pour accélérer, puisqu'utilisés souvent)
#define MAX_X2				4			// Centre de la boîte en x
#define MAX_Y2				4			// Centre de la boîte en y
#define MAX_Z2				10			// Centre de la boîte en z
///////

#define ASSOMBPAUSE			0.7f		// Facteur d'assombrissement lorsque l'on est en pause

#define PLANPARNIVEAU		10			// Nombre de plans nécessaires pour changer de niveau

#define SPEEDCAM			0.02f		// Facteur de vitesse de la caméra


// Les temps sont en millisecondes

#define TEMPSMOUV			250			// Temps pour un mouvement du bloc, soit 
										// une rotation ou une translation
#define TEMPSARRET			700			// Temps durant lequel un bloc va rester 
										// fixe en bas en pouvant bouger
#define SPEEDOBSERVCAM		0.1f		// Facteur de vitesse de la caméra lorsqu'elle suit 
										// un objet qui bouge
#define ASSOMBRISSEMENT		0.5f		// Facteur d'assombrissement lorsques les blocs s'arrêtent
#define TEMPSDROPFLASH		1000		// Temps durant lequel un plan flashera s'il est complété
#define TEMPSDROP			300			// Temps durant lequel les blocs tomberont s'ils sont 
										// situés au-dessus d'un plan qui est complété
#define SPEEDFAST			10			// Facteur de vitesse lorsque le bloc descend rapidement


#define NBBLOCDIFFERENT		12			// Nombre de blocs différents
#define NBCOULDIFFERENTE	8			// Nombre de couleurs de blocs différentes

#define EPSILON				0.01f		// Différence maximale pour que 2 réels soient 
										// considérés égaux


#define LARGEURTEXTE		200			// Largeur de la partie réservée au texte et au preview 
										// sur le côté droit de l'écran
#define BORDURE				20			// Largeur de la bordure entre le bord de la zone de 
										// texte et le cadre du preview
#define SPEEDROTPREVIEW		0.002f		// Facteur de vitesse de rotation du preview
#define DISTROT				8			// Distance à laquelle on se trouve du bloc de preview

#define TEMPSINTRO			5000		// Temps que dure l'approche dans l'intro
#define TOURINTRO			2			// Nombre de tours que l'on fait de la boîte dans l'intro

#define TEMPSFIN			2000		// Temps où apparaît le message final lorsque l'on quitte


// Valeurs dépendant de l'écran
extern short SCREEN_WIDTH;
extern short SCREEN_HEIGHT;
extern short CENTRE_X;
extern short CENTRE_Y;

// Type énumération pour les directions des blocs (et des rotations)
enum type_direction { AVANT, DROITE, ARRIERE, GAUCHE, HORAIRE, ANTIHORAIRE };

// Fonction qui sert à ne rien afficher
inline void NoDisplay(void) {}

#endif
