#include #include #include #include #include "main.h" #include "options.h" #include "evenements.h" #include "son.h" int NB_PERSO=2, VITESSE=35, REGEN=6, NBOMBES=25; int REBOURS=90, BONUSFREQ=3, NROUNDS=6; int avecson=1, avecmusique=1, avecjoy=0; int pleinecran=1, dblebuf=1; int pointdavance=1, changepersos=0, modejeu=0; int langue=FR; char bicfg[256]; char niveaux[40][256], **persoliste=NULL; int nb_niveaux=0, nsprit=0; void chargetouches(FILE *fich) { int i, n=0; int nbfait; if (fscanf(fich, "Configuration des touches :\n")) erreur("Configuration des touches introuvable dans", bicfg); for (i=0; i<8; i++) { nbfait=0; if (fscanf(fich, "PERSO %i\n", &n)==1) nbfait++; if (fscanf(fich, "haut=%i\n", &perso[n].cmd.haut)==1) nbfait++; if (fscanf(fich, "bas=%i\n", &perso[n].cmd.bas)==1) nbfait++; if (fscanf(fich, "gauche=%i\n", &perso[n].cmd.gauche)==1) nbfait++; if (fscanf(fich, "droite=%i\n", &perso[n].cmd.droite)==1) nbfait++; if (fscanf(fich, "b1=%i\n", &perso[n].cmd.b1)==1) nbfait++; if (fscanf(fich, "b2=%i\n", &perso[n].cmd.b2)==1) nbfait++; if (nbfait<7) erreur("Configuration des touches errorifiée dans", bicfg); } return; } /*--Recherche du répertoire d'installation--*/ char * rep_install(char * home) { char dir[256]; sprintf (dir, "%s/data/Sprites/citrouille.spr", "."); if (fopen(dir, "r")) return "./data"; sprintf (dir, "%s/data/Sprites/citrouille.spr", ".."); if (fopen(dir, "r")) return "../data"; sprintf (dir, "%s/Sprites/citrouille.spr", DIR); if (fopen(dir, "r")) return DIR; sprintf (dir, "%s/BomberInstinct/data/Sprites/citrouille.spr", home); if (fopen(dir, "r")) return strcat(home,"/BomberInstinct/data"); erreur("Le programme ne peut déterminer son répertoire d'installation.\nVérifiez qu'il est correctement installé",NULL); return ""; } void chargeconfig(void) { FILE *fich; int i, nbfait=0; char home[256]; #ifndef win32 strcpy(home,getenv("HOME")); #else sprintf(home, ""); #endif strcpy(repertoire, rep_install(home)); printf("Données trouvées dans : %s\n", repertoire); sprintf(bicfg, "%s/.bi.cfg", home); fich=fopen(bicfg, "r"); if (fich==NULL) { sprintf(bicfg, "%s/bi.cfg", repertoire); fich=fopen(bicfg, "r"); } printf("Fichier de configuration : %s\n", bicfg); nb_niveaux=0; persoliste=(char **)calloc(MAX_NPERSO, sizeof(char *)); for (i=0; ipos.x; int y=e->pos.y; switch (pl[x][y].params[0]) { case 0 : var=(1000/VITESSE)/4; break; case 1 : var=NROUNDS; break; } while (i<=var && (x+i<16)) { blitsprit (bombe, 0, 0, 32*(x+i), y*32); i++; } while (x+i<16) { rscaseplus(x+i, y); i++; } return; } /* Evenement de case pour le réglage des options */ /* Les paramètres sont sous la forme [quoirègler][min][max] */ void reglage(Evenement * e) { int var=0; int n=e->proprietaire; int param=e->param; if (perso[n].pos.x == e->pos.x && perso[n].pos.y == e->pos.y) e->fois++; if (perso[n].cmd.actif&CMD_GAUCHE && !(perso[n].cmd.precedent&CMD_GAUCHE)) var--; if (perso[n].cmd.actif&CMD_DROITE && !(perso[n].cmd.precedent&CMD_DROITE)) var++; switch (param) { case 0 : VITESSE=250/((250/VITESSE)+var); break; case 1 : NROUNDS+=var; break; } return; } void dessinebouton(Evenement * e) { int var=0; int x=e->pos.x; int y=e->pos.y; switch (pl[x][y].params[0]) { case 0 : var=avecson; break; case 1 : var=avecmusique; break; case 2 : var=pleinecran; break; case 3 : var=langue; break; case 4 : var=pointdavance; break; case 5 : var=changepersos; break; } blitsprit (bouton, 2, var, 32*x, 32*y); return; } void onoff(Evenement * e) { int x=e->pos.x; int y=e->pos.y; switch (pl[x][y].params[0]) { case 0 : avecson=!avecson; break; case 1 : avecmusique=!avecmusique; if (avecmusique && !musintro) { musintro = chargemus("intro.s3m"); muschoix = chargemus("choix.s3m"); } if (avecmusique) Mix_PlayMusic(musintro, -1); else Mix_HaltMusic(); break; case 2 : passenpleinecran(); break; case 3 : langue=!langue; break; case 4 : pointdavance=!pointdavance; break; case 5 : changepersos=!changepersos; break; } bruitsplus(s_bouton, 1); return; } char * choixlangue(char where[], const char nom[], const char ext[]) { char x[5]="fr"; if (langue==ENG) sprintf(x, "en"); sprintf(where, "%s_%s.%s", nom, x, ext); return where; }