#include "macros.h" #define MAX_NPERSO 20 #include "sprites.h" #include "pouvoirs.h" /*--Structures--*/ typedef struct { int x; int y; }Coord; typedef struct { SDL_Joystick *joy; /* NULL si clavier */ int haut; /* Indique aussi le no du joy le cas échéant */ int bas; int gauche; int droite; int b1; int b2; int actif; int precedent; }Commandes; typedef struct _Bombe Bombe; typedef struct _Bombelist Bombelist; typedef struct _Anims Anims; typedef struct _Evenement Evenement; struct _Bombe { Coord pos; int rebours; int lflammes; int car; Bombe * suiv; Bombe * prec; }; struct _Bombelist { Bombe * contenu; Bombelist * suiv; }; struct _Anims { Coord pos; Sprite *sprite; int anim; int frame; int vitesse; int compteur; int duree; Anims * suiv; Anims * prec; }; struct _Evenement{ int delai; int delaisg; int fois; int proprietaire; int param; Coord pos; void (*fonction)(Evenement *); void (*termine)(Evenement *); Evenement * suiv; Evenement * prec; }; typedef struct { int type; int bombe; Sprite *elem; int anim; int frame; int *params; int nparams; /* Si le sol doit être dessiné en-dessous de l'élément */ int sol; void (*evt)(Evenement *); /* Pour la sauvegarde en cas de changement (bouton...) */ int typesg, animsg, framesg; Sprite *elemsg; }Plateau; typedef struct { int joueurIA; /* Variables : -de mouvement */ Coord pos; Coord pixpos; unsigned int anim; int dir; int mv; /* -de situation */ unsigned int statut; int animdroite; // int framedroite; unsigned int energie; unsigned int lflammes; /* -de bombes */ Bombe * bombes; // int nbbombes; /* -de pouvoirs */ int pouvactif[4]; int pouvoirparam; /* Constantes */ Commandes cmd; Pouvoir pouv[4]; }Personnage; typedef void (*Pouvoirspecial)(int n, int p); extern Plateau pl[16][15]; extern Personnage perso[8]; extern const int dx[4], dy[4]; /*--Variables globales de configuration--*/ extern int NB_PERSO; extern char repertoire[256]; extern char prefixeniv[256], prefixeimg[256]; extern char prefixespr[256], prefixeson[256]; extern char bicfg[256]; extern char **spritliste; extern Coord fauxperso[MAX_NPERSO]; extern int danslemenu; extern int compteur; extern int encore; extern Uint8 *clavier; extern SDL_Joystick **joystick; extern SDL_Surface *ecran; extern int nrs; int libre(int x, int y, int dir); int aleat(int max); void erreur(char *message, char *param); void videcran(void); Anims * animsplus(Sprite *sprite, int anim, int vitesse, int duree, int x, int y); void animsmoins(Anims *a); void rscaseplus(int x, int y); void rdplateau(int); void menuevt(Evenement * e); void dessinebande(void); void mort(int tueur, int tue); void afficheperso(int n, int frame); void dessinecase(int n, Coord *co); Bombe * posebombe(int x, int y, int n); void prendbonus(int n); void passenpleinecran(void); int ajustevitesse(void);