#include <string.h>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>
#include <SDL/SDL_image.h>

#define ObjCNT 100

#define gNoid 99
#define iNoid 17
#define bNoid 16
#define mNoid 18

#define eMOTION 5
#define ePRESS 6
#define eRELASE 7
#define eRESIZE 8
#define eACTIVE 12
#define ePAUSE 13
#define eEXIT 15

#define RELASE 16
#define MOTION 17
#define ACTIVE 2
#define EXIT 1
#define RESIZE 12
#define PRESS 15

/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
/* @                                  NOID                                 @ */
/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
	extern int exitNOID;
/* -------------------------- Object ---------------------------- */
	struct NoIdea{
		int layer;		void (*callback)(void);
		int timer, wait;	void (*timeback)(void);
		int event;		void (*evenback)(void);
		int click;		void (*clikback)(void);
		int over;		void (*overback)(void);
		int drop;		void (*dropback)(void);
		int jeton;		float x,y, z,r, h,v;
		char *carte;		int color,police;
	};
	extern struct NoIdea noid[ObjCNT];

	struct Lyer{
		int many;
		int active;		//active layer
		int running;		//running obj number
		int cntr[ObjCNT];
	};
	extern struct Lyer layer;

	struct sleep {
		int idle;
		int avr;
		int sum;
		int now;
	};
	extern struct sleep idle;
/* ------------------------- File ------------------------------- */
	struct filling{	
		SDL_Surface *jeton[199];
		Mix_Music *ruban[3];
		TTF_Font *police;
	};
	extern struct filling fNOID;

/* ----------------------- Musique ------------------------------ */
extern Mix_Music *museNOID, *trackNOID;

/* -------------- main function callback -------------------------- */
void NoidCallBackNULL(void);
