diff options
author | Damien Appert <dappert> | 2010-10-22 11:30:51 +0000 |
---|---|---|
committer | Damien Appert <dappert> | 2010-10-22 11:30:51 +0000 |
commit | f6d4ed9a006a69677ce3f82a7a1a6bb1050b366d (patch) | |
tree | 4e132bb1eb4f92b987deccd22a9018d0058ac31f /sdl-test | |
parent | eb6c3e70bf4144dedb31686821c94c943f13a71b (diff) | |
download | 2010-netlemmings-f6d4ed9a006a69677ce3f82a7a1a6bb1050b366d.tar.gz 2010-netlemmings-f6d4ed9a006a69677ce3f82a7a1a6bb1050b366d.tar.bz2 2010-netlemmings-f6d4ed9a006a69677ce3f82a7a1a6bb1050b366d.zip |
up automate
git-svn-id: file:///var/svn/2010-netlemmings/trunk@106 077b3477-7977-48bd-8428-443f22f7bfda
Diffstat (limited to 'sdl-test')
-rw-r--r-- | sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy | 162 |
1 files changed, 95 insertions, 67 deletions
diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy index 6bc63c6..62186f7 100644 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy @@ -54,9 +54,6 @@ #define NBR_BUTTON_LEMMING 13 const int ADD_OBJ = NBR_ADD_OBJ + NBR_BUTTON_LEMMING; - //vide == black - Uint32 ccc_vide = 0x000000; - //cyan pixel color Uint32 ccc_cyan= 0x00ffff; //yellow pixel color @@ -67,18 +64,13 @@ Uint32 ccc_green= 0x00ff00; // erase surface; Uint32 ccc_black= 0x000000; + //Blanc cursor Uint32 ccc_cursor = 0xffffff; - //Noir Objet - Uint32 ccc_objet = 0xff000000; - //Noir Terrain - Uint32 ccc_terrain = 0xff000000; - // Noir Steel - Uint32 ccc_steel = 0xff000000; + //Noir colorKeyGif + Uint32 ccc_keyGif = 0x000000; // lemming color Uint32 ccc_lemming = 0x001a82; - // icon_color - Uint32 ccc_icon = 0x000000; // object color // terrain @@ -87,9 +79,15 @@ Uint32 ccc_tFull = 0xff38b0de; // Ciel d'été Uint32 ccc_tNoOverwrite = 0xff0000ff; // bleu Uint32 ccc_tHidden = 0xff236b8e; // Bleu Acier - // new formule - Uint32 ccc_tBrick = 0xff00edaa;//0x00ed4f; // vert - Uint32 ccc_bgStencil = 0x00000000; + + // after conversion + // destructible => brick + Uint32 ccc_tBrick = 0x00edaa;//0x00ed4f; // vert + // empty => bgStencil + Uint32 ccc_bgStencil = 0x000000; + // steel + // indestructible => steel + Uint32 ccc_s = 0xff00aa;//0xff00ff;//rose bonbon // object Uint32 ccc_oPassive = 0x6b8ebb;//0x6b8e23; // Vert olive clair @@ -106,21 +104,17 @@ Uint32 ccc_oUnknow = 0xffffbb;//0xffffff; // Blanc - // steel - - Uint32 ccc_s = 0xffff00aa;//0xff00ff;//rose bonbon // error - - Uint32 ccc_error = 0xff666669; + Uint32 ccc_error = 0x666669; // lemming - Uint32 ccc_lWalk_on = 0xff00edaa; + Uint32 ccc_lWalk_on = 0xffddcc; - Uint32 ccc_lStopper = 0xffffaacc; + Uint32 ccc_lStopper = 0xffffcb; - Uint32 ccc_lStopperLeft = 0xffffbbcc; - Uint32 ccc_lStopperRight = 0xffffcccc; + Uint32 ccc_lStopperLeft = 0xffbbcb; + Uint32 ccc_lStopperRight = 0xffcccb; @@ -471,9 +465,9 @@ int reachedPlateau(int x, int y, int size, int dir); - int stencilMid(int x, int y, int size); + int stencilMid(int x, int y); - int turnedByStopper(int x, int y, int size, int dir); + int turnedByStopper(int x, int y, int dir); int explode(int x, int y, int size); @@ -1123,19 +1117,22 @@ int checkPixelDOWN(int nbr, int x, int y){ {return 0;} yb = y + 1; + for(res=0;res<nbr;++res){ if(yb+res >= LEVEL_HEIGHT){ return FALL_DISTANCE_FORCE_FALL; } + putPixel(pSpr_Lem,x,yb+res,ccc_red); err=get_pixel32(x,yb+res,pStencil); if(err==ccc_error){return 113;} + + printf("res %d\n",res); - if((err&0xbb)!=0xbb){ - //if((err&ccc_lWalk_on)!=ccc_bgStencil){ - if((err&ccc_lWalk_on)!=ccc_bgStencil){ - return res; + if((err&0xbb)!=0xbb){// it's not an object + if(err!=ccc_bgStencil){ + return res;//return ((res == 0)? 0 : res-1);//res; } } } @@ -1163,9 +1160,9 @@ int checkPixelUP(int nbr, int x, int y, int size ){ err=get_pixel32(x,ym-res,pStencil); if(err==ccc_error){return 113;} - if((err&0xbb)!=0xbb){ - if((err|ccc_lWalk_on)!=ccc_bgStencil){ - return res; + if((err&0xbb)!=0xbb){// it's not an object + if(err!=ccc_bgStencil){ + return res;//return ((res == 0)? 0 : res-1);//res; } } } @@ -1194,6 +1191,8 @@ int checkPixelUP(int nbr, int x, int y, int size ){ if (y >= LEVEL_HEIGHT) return LEVEL_HEIGHT-1; + //y+=1; + for(res=0;res<WALKER_OBSTACLE_HEIGHT;++res){ if(y-res<0){ return WALKER_OBSTACLE_HEIGHT +1;// forbid leaving level to the top @@ -1203,12 +1202,14 @@ int checkPixelUP(int nbr, int x, int y, int size ){ err=get_pixel32(x,y-res,pStencil); if(err==ccc_error){return 114;} - - if((err&0xbb)!=0xbb){ - //if(err!=(ccc_lWalk_on & ccc_bgStencil)){ - if((err|ccc_lWalk_on)!=ccc_bgStencil){ + if((err&0xbb)!=0xbb){// it's not an object + if((err&ccc_lWalk_on)!=ccc_lWalk_on){// it's not an walk Lem + if((err&0xcb)!=0xcb){// it's not a blocker + if(err==ccc_bgStencil){ return res; } + } else {return 0;}//WALKER_OBSTACLE_HEIGHT;} + } } } return res; @@ -1255,13 +1256,12 @@ int checkPixelUP(int nbr, int x, int y, int size ){ } //return stencil value from the middle of the lemming - int stencilMid(int x, int y, int size) { + int stencilMid(int x, int y) { Uint32 err; - int ym = midY(y,size); - if (x>0 && x<LEVEL_WIDTH && ym > 0 && ym < LEVEL_HEIGHT){ + if (x>0 && x<LEVEL_WIDTH && y > 0 && y < LEVEL_HEIGHT){ putPixel(pSpr_Lem,x,y,0xff00ff); - err=get_pixel32(x,ym,pStencil); + err=get_pixel32(x,y,pStencil); } else { err = ccc_bgStencil; @@ -1271,18 +1271,19 @@ int checkPixelUP(int nbr, int x, int y, int size ){ // Check if a Lemming is to be turned by a stopper/blocker // return true if Lemming is to be turned, false otherwise - int turnedByStopper(int x, int y, int size, int dir) { - int s ; + int turnedByStopper(int x, int y, int dir) { Uint32 err; - err=stencilMid(x,y,size); + err=stencilMid(x,y); if(err==ccc_error){return 116;} - s=err&ccc_lStopper; + if(err==ccc_lWalk_on){return 2;} + + printf("err %p\n",err); - if (s == ccc_lStopperLeft && dir==1) {//Right + if (err == ccc_lStopperLeft && dir==1) {//Right //LEFT; return 0; } - if (s == ccc_lStopperRight && dir==0) {//Left + if (err == ccc_lStopperRight && dir==0) {//Left //RIGHT return 1; } @@ -1377,13 +1378,13 @@ int checkPixelUP(int nbr, int x, int y, int size ){ k->ID=10;//BOMBER break; } + //printf("x =%d y =%d x+fx= %d, y+fy =%d \n",k->x,k->y,k->x+fx,k->y+fy); free=checkPixelDOWN(FALLER_STEP, k->x+fx,k->y+fy); if(free==113){return 113;} if(free==FALL_DISTANCE_FORCE_FALL) {k->y += FALLER_STEP;} else {k->y += free;} // max: FALLER_STEP - err=outOfLowerMap(k->y+fy); if(err==114){return 114;} if(err==0){ @@ -1398,6 +1399,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ k->ID=5;//SPLAT } else { k->ID=0;//WALKER + k->y-=2; k->data.pl->cptFall=0; } } @@ -1417,7 +1419,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ break; } // check collision with stopper - err=turnedByStopper(k->x+fx,k->y+fy,fs,k->data.pl->dir); + err=turnedByStopper(k->x+lw/2,k->y+fy,k->data.pl->dir); if(err==116){return 116;} if(err!=2){ k->data.pl->dir=err; @@ -1446,7 +1448,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ break; } // check collision with stopper - err=turnedByStopper(k->x+fx,k->y+fy,fs,k->data.pl->dir); + err=turnedByStopper(k->x+lw/2,k->y+fy,k->data.pl->dir); if(err==116){return 116;} if(err!=2){ k->data.pl->dir=err; @@ -1607,7 +1609,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ } break; } - err=turnedByStopper(k->x+fx,k->y+fy,fs,k->data.pl->dir); + err=turnedByStopper(k->x+lw/2,k->y+fy,k->data.pl->dir); if(err==116){return 116;} if(err!=2){ k->data.pl->dir=err; @@ -1675,7 +1677,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ break; } // check collision with stopper - err=turnedByStopper(k->x+fx,k->y+fy,fs,k->data.pl->dir); + err=turnedByStopper(k->x+lw/2,k->y+fy,k->data.pl->dir); if(err==116){return 116;} if(err!=2){ k->data.pl->dir=err; @@ -1794,7 +1796,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ // trap err=get_pixel32(k->x+fx,k->y,pStencil); if(err==ccc_error){return 12;} - printf("k->ID => %d get_pixel32(k->x %d+fx %d => %d,k->y %d,pStencil) == %p \n",k->ID,k->x,fx,k->x+fx,k->y,err); + //printf("k->ID => %d get_pixel32(k->x %d+fx %d => %d,k->y %d,pStencil) == %p \n",k->ID,k->x,fx,k->x+fx,k->y,err); if(err==ccc_oTrapDrown){ k->ID=7; k->data.pl->cptState=gInit->mapI.lemmingDATA[k->ID].state; @@ -2083,8 +2085,8 @@ int checkPixelUP(int nbr, int x, int y, int size ){ for(i=0; i < gInit->mapI.map.tiles*2 ; i+=2) { sprintf(filepath, "%s/%s%s%d.gif", folder,temp,"_", i/2); - gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_terrain); - gInit->mapI.map.tabGif[i+1+cpt] = flipSurfaceUD_LR(load_image(filepath,ccc_terrain),UD,ccc_terrain); + gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_keyGif); + 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)) { printf("ERREUR load_file Objet: %s\n", filepath); return(16); @@ -2100,8 +2102,8 @@ int checkPixelUP(int nbr, int x, int y, int size ){ for(i=0; i < gInit->mapI.map.tilesObjet*2 ; i+=2) { sprintf(filepath, "%s/%s%s%d.gif", folder,temp,"o_", i/2); - gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_objet); - gInit->mapI.map.tabGif[i+1+cpt] = flipSurfaceUD_LR(load_image(filepath,ccc_objet),UD,ccc_objet); + gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_keyGif); + 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)) { printf("ERREUR load_file Objet: %s\n", filepath); return(17); @@ -2117,7 +2119,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ for(i=0; i < gInit->mapI.map.tilesSteel ; ++i) { sprintf(filepath, "%s/%s%s%d.gif", folder,temp,"om_", tabNum[i]); - gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_steel); + gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_keyGif); if(gInit->mapI.map.tabGif[i+cpt] == NULL) { printf("ERREUR load_file steel: %s\n", filepath); return(18); @@ -2212,7 +2214,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){ //if(i<7){sprintf(filepath, "%s/%s%d.gif", folderLem,"icon_",i);} //if(i==7){sprintf(filepath, "%s/%s.gif", folderLem,"icon_6_alt");} //if(i>7){sprintf(filepath, "%s/%s%d.gif", folderLem,"icon_",i-1);} - gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_icon); + gInit->mapI.map.tabGif[i+cpt] = load_image(filepath,ccc_black); if(gInit->mapI.map.tabGif[i+cpt] == NULL) { printf("ERREUR load_file icon: %s\n", filepath); return(30); @@ -2959,7 +2961,7 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){ // fin check rStencil.x=0 ; rStencil.y=objetAnim.y ; - if((err=paint_manip(sf,rStencil,pSpr_Lem,offset,gInit->mapI.map.cmap.bgColor,ccc_objet,mode))!=0){ + if((err=paint_manip(sf,rStencil,pSpr_Lem,offset,gInit->mapI.map.cmap.bgColor,ccc_keyGif,mode))!=0){ return err; } k=k->next; @@ -3101,6 +3103,7 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){ int err=0; int cpt=0; int newID; + int fx,fy,fs,la,ls;//lt; k=gInit->l.ll; @@ -3144,15 +3147,32 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){ 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]; + + fx=gInit->mapI.lemmingDATA[newID].footX; + fy=gInit->mapI.lemmingDATA[newID].footY; + fs=gInit->mapI.lemmingDATA[newID].footSize; + la=gInit->mapI.lemmingDATA[newID].anim; + //lt=gInit->mapI.lemmingDATA[newID].type; + ls=gInit->mapI.lemmingDATA[newID].state; + objetAnim.x = 0; - objetAnim.h = sf->h/(gInit->mapI.lemmingDATA[newID].state); - objetAnim.y = (anim_objet((gInit->mapI.lemmingDATA[newID].anim+90),0,cptFps,gInit->mapI.lemmingDATA[newID].state,&k->data.pl->cptState,gInit))*(objetAnim.h); // +3 : 0 == loop et dans anim_objet c'est 3 pas 0 (fichier de conf) FIXME + objetAnim.h = sf->h/ls; + objetAnim.y = (anim_objet((la+90),0,cptFps,ls,&k->data.pl->cptState,gInit))*(objetAnim.h); // +3 : 0 == loop et dans anim_objet c'est 3 pas 0 (fichier de conf) FIXME objetAnim.w = sf->w; - offset.w = objetAnim.w; - offset.h = objetAnim.h; +// offset.w = objetAnim.w; +// offset.h = objetAnim.h; switch(newID){ - case 0: SDL_FillRect(pStencil, &offset, ccc_lWalk_on);break; - case 6: SDL_FillRect(pStencil, &offset, ccc_lStopper);break; + case 0: {// WALK_ON + putPixel(pStencil,k->x+fx+fs,k->y+fy,ccc_lWalk_on); + //SDL_FillRect(pStencil, &offset, ccc_lWalk_on); + break; + } + case 6: {//BLOCKER + putPixel(pStencil,k->x+sf->w-fx-fs,k->y+fy,ccc_lStopperLeft); + putPixel(pStencil,k->x+fx+fs,k->y+fy,ccc_lStopperRight); + //SDL_FillRect(pStencil, &offset, ccc_lStopper); + break; + } default:break; } if ((res=test_blit(sf, &objetAnim, pSpr_Lem, &offset)) != 0){ @@ -3193,13 +3213,21 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){ (k->data.pl->bomber==404)){ --gInit->mapI.paraMap[6]; k->data.pl->bomber=5; + if( k->data.pl->blocker==1){ + k->ID=21; + } else { + k->ID=10; + } } break; //blocker - case 6 : if((gInit->mapI.paraMap[7]>0)&& - (k->data.pl->blocker==0)){ + case 6 : if(((k->ID==0)||((k->ID>9)&&(k->ID<17)))&& + (gInit->mapI.paraMap[7]>0) + /*&&(k->data.pl->blocker==0)*/ + ){ --gInit->mapI.paraMap[7]; k->data.pl->blocker=1; + k->ID=6; } break; case 11 : ;break;//builder |