diff options
author | Damien Appert <dappert> | 2010-11-07 01:35:27 +0000 |
---|---|---|
committer | Damien Appert <dappert> | 2010-11-07 01:35:27 +0000 |
commit | 06742f5f2cc4eed2f3ad3ae44c2544fbf8215e8e (patch) | |
tree | 5b6bb8378cf5306af69d19c28e219e59fb87dc32 /sdl-test | |
parent | bb8d3f0f67234d333dcce265dbc3b1f844c8f4bc (diff) | |
download | 2010-netlemmings-06742f5f2cc4eed2f3ad3ae44c2544fbf8215e8e.tar.gz 2010-netlemmings-06742f5f2cc4eed2f3ad3ae44c2544fbf8215e8e.tar.bz2 2010-netlemmings-06742f5f2cc4eed2f3ad3ae44c2544fbf8215e8e.zip |
modif lemmini + FNI.c
git-svn-id: file:///var/svn/2010-netlemmings/trunk@142 077b3477-7977-48bd-8428-443f22f7bfda
Diffstat (limited to 'sdl-test')
-rw-r--r-- | sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c | 97 | ||||
-rw-r--r-- | sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy | 106 |
2 files changed, 127 insertions, 76 deletions
diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c b/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c index 47e0379..309e97b 100644 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c @@ -426,7 +426,7 @@ int stateLemming(struct gameInit *gInit){ fs=gInit->mapI.lemmingDATA[newID].footSize; lState=gInit->mapI.lemmingDATA[newID].state; - sfT = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2 + gInit->mapI.map.tilesObjet*2 +gInit->mapI.map.tilesSteel +(newID)*2+(k->data.pl->dir) + ADD_OBJ]; + sfT = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2 + gInit->mapI.map.tilesObjet*2 +gInit->mapI.map.tilesSteel*2 +(newID)*2+(k->data.pl->dir) + ADD_OBJ]; lh=sfT->h/lState; lw=sfT->w; @@ -1203,7 +1203,7 @@ int stateLemming(struct gameInit *gInit){ folderLem=malloc(sizeof(char)*(llem+1)); sprintf(folderLem,"%s","../../../misc/"); - total=(LEM_JOB*2) + (gInit->mapI.map.tiles)*2 + gInit->mapI.map.tilesSteel + ((gInit->mapI.map.tilesObjet)*2); + total=(LEM_JOB*2) + (gInit->mapI.map.tiles)*2 + gInit->mapI.map.tilesSteel*2 + ((gInit->mapI.map.tilesObjet)*2); gInit->mapI.map.tabGif=malloc((total + ADD_OBJ) * sizeof(SDL_Surface *)); @@ -1238,28 +1238,29 @@ int stateLemming(struct gameInit *gInit){ //-DEBUG-printf("ERREUR load_file Objet: %s\n", filepath); return(17); } else { - //-DEBUG-printf("load_file ok : %i -> '%s' + flip_LR\n", i+cpt, filepath); + //-DEBUG-printf("load_file ok : %i -> '%s' + flip_UD\n", i+cpt, filepath); } } free(filepath); //stored steel - cpt=ADD_OBJ+(gInit->mapI.map.tiles*2)+(gInit->mapI.map.tilesObjet*2); + cpt=ADD_OBJ+(gInit->mapI.map.tiles*2)+gInit->mapI.map.tilesObjet*2; filepath = malloc(sizeof(char)*(strlen(folder)+lt+strlen("/om_.gif")+(sizeof(int)*10))); - for(i=0; i < gInit->mapI.map.tilesSteel ; ++i) { - sprintf(filepath, "%s/%s%s%d.gif", folder,temp,"om_", tabNum[i]); + for(i=0; i < gInit->mapI.map.tilesSteel*2 ; i+=2) { + sprintf(filepath, "%s/%s%s%d.gif", folder,temp,"om_", tabNum[i/2]); gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_keyGif); - if(gInit->mapI.map.tabGif[i+cpt] == NULL) { - //-DEBUG-printf("ERREUR load_file steel: %s\n", filepath); + gInit->mapI.map.tabGif[i+1+cpt] = flipSurfaceUD_LR(load_image(filepath,ccc_keyGif),UD,ccc_keyGif); + if((gInit->mapI.map.tabGif[i+cpt] == NULL)||(gInit->mapI.map.tabGif[i+1+cpt] == NULL)) { + //-DEBUG-printf("ERREUR load_file Objet: %s\n", filepath); return(18); } else { - //-DEBUG-printf("load_file ok : %i -> '%s'\n", i+cpt, filepath); + //-DEBUG-printf("load_file ok : %i -> '%s' + flip_UD\n", i+cpt, filepath); } } free(filepath); //stored lemmingsDATA - cpt=ADD_OBJ+(gInit->mapI.map.tilesObjet*2)+(gInit->mapI.map.tiles)*2+gInit->mapI.map.tilesSteel; + cpt=ADD_OBJ+(gInit->mapI.map.tilesObjet*2)+(gInit->mapI.map.tiles)*2+gInit->mapI.map.tilesSteel*2; filepath = malloc(sizeof(char)*(strlen(folderLem)+strlen("lemm")+strlen("/_.gif")+(sizeof(int)*10))); @@ -1330,7 +1331,7 @@ int stateLemming(struct gameInit *gInit){ return(28); } // 9: alphabet.gif - gInit->mapI.map.tabGif[9]= load_image("./alphabet.gif",ccc_cursor); + gInit->mapI.map.tabGif[9]= load_image("./alphabet.gif",0xffffff); if ( gInit->mapI.map.tabGif[9] == NULL ) { //-DEBUG-printf("ERREUR load_file alphabet.gif: %s\n", "./alphabet.gif"); return(29); @@ -1427,6 +1428,7 @@ int stateLemming(struct gameInit *gInit){ char *steelGif; char *temp; int tabNum[255]; + int i,tempi,max,j; struct dirent *lecture; DIR *rep; @@ -1490,7 +1492,19 @@ int stateLemming(struct gameInit *gInit){ } closedir(rep); - + //tri tableau + for(j=0;j<2;++j){ + for(i=0;i<gInit->mapI.map.tilesSteel-1;++i){ + max=tabNum[i]; + tempi=tabNum[i+1]; + + if(max > tempi){ + tabNum[i]=tempi; + tabNum[i+1]=max; + i=0; + } + } + } yyin=fopen(spriteINI, "r"); if (yyin==NULL) { fprintf(stderr,"Filename INVALIDE: %s\n",spriteINI); @@ -1519,8 +1533,8 @@ int stateLemming(struct gameInit *gInit){ gInit->s.ls=(struct listeSimplementChainee*)rev_listeO(gInit->s.ls); // AFFICHAGE DES INFOS DE LA MAP - err=afficher(gInit); - if(err!=0){return err;} + //err=afficher(gInit); + //if(err!=0){return err;} //Si tout s'est bien passé free(terrainGif); @@ -2366,36 +2380,72 @@ int stateLemming(struct gameInit *gInit){ int type=0; int ox,oy,i,of; int mode=0; - Uint32 color,color2;//,color3; + int cptSteel; + Uint32 ccc_temp,color,color2;//,color3; //int size; //void *temp_pixels = NULL; //DEBUT TEST: SPR k=gInit->o.lo; while ( k !=NULL ) { - sf = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2+k->ID*2+k->data.po->UD+ADD_OBJ]; - + //sf = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2+k->ID*2+k->data.po->UD+ADD_OBJ]; + type=gInit->mapI.map.tabDataSprO[k->ID].type; + + if (type>=3&&type<=8){ + cptSteel=0; + for(i=0;i<gInit->mapI.map.tilesObjet;++i){ + if(i==k->ID){break;} + if ((gInit->mapI.map.tabDataSprO[i].type)>=3 && (gInit->mapI.map.tabDataSprO[i].type)<=8){ + cptSteel++; + } + } + + //printf("k->ID %d cptSteel %d type %d \n",k->ID,cptSteel,type); + sf = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2+gInit->mapI.map.tilesObjet*2+cptSteel*2+k->data.po->UD+ADD_OBJ]; offset.x = k->x; offset.y = k->y; - of=gInit->mapI.map.tabDataSprO[k->ID].state; + //of=gInit->mapI.map.tabDataSprO[k->ID].state; objetAnim.x = 0; - objetAnim.h = sf->h/of; + objetAnim.h = sf->h;///of; objetAnim.w = sf->w; - objetAnim.y = (anim_objet( + objetAnim.y = 0;/*(anim_objet( gInit->mapI.map.tabDataSprO[k->ID].anim, type, cptFps, of, &k->data.po->cptState, gInit) - )*(objetAnim.h); + )*(objetAnim.h);*/ + + switch(type){ + case 3://no digging to the left + ccc_temp=ccc_oNoDigLeft;break; + case 4://no digging to the right + ccc_temp=ccc_oNoDigRight;break; + case 5://trap which makes lemmings drown (water/quick sand/mud) + ccc_temp=ccc_oTrapDrown;break; + case 6://trap which replaces lemming with death animation + ccc_temp=ccc_oTrapAndNoLem;break; + case 7://trap which triggers lemming death animation + ccc_temp=ccc_oTrapAndLem;break; + case 8://exit + ccc_temp=ccc_oExit;break; + default: //-DEBUG-printf("BUG: bad algo == type = %d\n",type); + return 45; + } + + if((err=paint_manip(sf,objetAnim,pStencil,offset,ccc_temp,ccc_keyGif,19,NULL))!=0){ + return err; + } + + } - if(type==8){ + /* if(type==8){ rStencil.w=objetAnim.w/8; rStencil.x=k->x+objetAnim.w/2-rStencil.w/2 -1 ; rStencil.y=k->y ; @@ -2523,6 +2573,7 @@ int stateLemming(struct gameInit *gInit){ } //} }//FIN ELSE MODE + */ k=k->next; } ///FIN TEST: SPR @@ -2586,7 +2637,7 @@ int paint_lemming (struct gameInit *gInit, int cptFps){ offset.x = k->x; offset.y = k->y; - sf = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2+(gInit->mapI.map.tilesObjet*2)+gInit->mapI.map.tilesSteel+(newID)*2+k->data.pl->dir+ADD_OBJ]; + sf = gInit->mapI.map.tabGif[gInit->mapI.map.tiles*2+(gInit->mapI.map.tilesObjet*2)+gInit->mapI.map.tilesSteel*2+(newID)*2+k->data.pl->dir+ADD_OBJ]; fx=gInit->mapI.lemmingDATA[newID].footX; fy=gInit->mapI.lemmingDATA[newID].footY; diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy index cba649c..99cbcc6 100644 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy @@ -556,64 +556,64 @@ int paint_stencil=0; - %} - - %parse-param { struct gameInit *gInit } - - %union {char* str; int num; struct list_int *ints; struct val *val;} - - %token LEXERROR - %token STYLE - %token NAME - %token SLEM - %token BGCOLOR - %token DEBRISCOLOR - %token PARTICLECOLOR - %token AFF - %token XC - %token EOL - %token VIR - %token <str> IDENT - %token <str> STR - %token <num> INT - - %type <ints> extra_vals - %type <val> val - - %start ini - - %% - - ini: - | ini decl - | ini EOL - - decl: STYLE AFF val { - int ok=0; - enum eMapStyle s; // STYLE - ////-DEBUG-printf("Le style\n"); - if ( $3->type != 0 ) { - //-DEBUG-printf("ERREUR: Fichier .ini corrompu (style n'est pas de style int)\n"); - } else { - s=0; - while(s<NBR_STYLE_MAP){ +%} - if ( (strcmp($3->ptr.str,"undefined")!=0)&& - (strcmp($3->ptr.str,tabString_eMapStyle[s]) == 0 ) ){ +%parse-param { struct gameInit *gInit } - ok=2; - gInit->mapI.map.style=s; - break; - } - ++s; - } - if (ok!=2) { - // BUG ... - //-DEBUG-printf("Style [%s] invalide (undefined) !!\n",$3->ptr.str); - exit(2); +%union {char* str; int num; struct list_int *ints; struct val *val;} + +%token LEXERROR +%token STYLE +%token NAME +%token SLEM +%token BGCOLOR +%token DEBRISCOLOR +%token PARTICLECOLOR +%token AFF +%token XC +%token EOL +%token VIR +%token <str> IDENT +%token <str> STR +%token <num> INT + +%type <ints> extra_vals +%type <val> val + +%start ini + +%% + +ini: +| ini decl +| ini EOL + +decl: STYLE AFF val { + int ok=0; + enum eMapStyle s; // STYLE + ////-DEBUG-printf("Le style\n"); + if ( $3->type != 0 ) { + //-DEBUG-printf("ERREUR: Fichier .ini corrompu (style n'est pas de style int)\n"); + } else { + s=0; + while(s<NBR_STYLE_MAP){ + + if ( (strcmp($3->ptr.str,"undefined")!=0)&& + (strcmp($3->ptr.str,tabString_eMapStyle[s]) == 0 ) ){ + + ok=2; + gInit->mapI.map.style=s; + break; } + ++s; + } + if (ok!=2) { + // BUG ... + //-DEBUG-printf("Style [%s] invalide (undefined) !!\n",$3->ptr.str); + exit(2); } } +} | NAME AFF val { ////-DEBUG-printf("Le name \n"); gInit->mapI.name=$3->ptr.str; //FIXME |