summaryrefslogtreecommitdiff
path: root/sdl-test
diff options
context:
space:
mode:
authorDamien Appert <dappert>2010-10-22 18:11:18 +0000
committerDamien Appert <dappert>2010-10-22 18:11:18 +0000
commit1906f73f9efd23c3ed3c568f7ea88b05142356d4 (patch)
tree90712f7f8fed6b609f753bc7411bbd7be1737d21 /sdl-test
parentf6d4ed9a006a69677ce3f82a7a1a6bb1050b366d (diff)
download2010-netlemmings-1906f73f9efd23c3ed3c568f7ea88b05142356d4.tar.gz
2010-netlemmings-1906f73f9efd23c3ed3c568f7ea88b05142356d4.tar.bz2
2010-netlemmings-1906f73f9efd23c3ed3c568f7ea88b05142356d4.zip
up
git-svn-id: file:///var/svn/2010-netlemmings/trunk@107 077b3477-7977-48bd-8428-443f22f7bfda
Diffstat (limited to 'sdl-test')
-rw-r--r--sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy155
1 files changed, 137 insertions, 18 deletions
diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy
index 62186f7..37e5bac 100644
--- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy
+++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy
@@ -117,6 +117,11 @@
Uint32 ccc_lStopperRight = 0xffcccb;
+ //MINIMAP
+#define MINIMAP_X0 636
+#define MINIMAP_Y0 325
+#define MINIMAP_MX 464
+#define MINIMAP_MY 100
// Config Cam
@@ -520,6 +525,8 @@
int lancement();
int test_blit(SDL_Surface *spr,SDL_Rect* from,SDL_Surface *t,SDL_Rect* to);
+
+ int miniMap (SDL_Surface *s, int x0, int y0, float coefX, float coefY);
int paint_stencil=0;
@@ -1128,7 +1135,7 @@ int checkPixelDOWN(int nbr, int x, int y){
err=get_pixel32(x,yb+res,pStencil);
if(err==ccc_error){return 113;}
- printf("res %d\n",res);
+ //printf("res %d\n",res);
if((err&0xbb)!=0xbb){// it's not an object
if(err!=ccc_bgStencil){
@@ -1202,14 +1209,16 @@ 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){// 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;}
- }
+
+ if((err&0xcb)==0xcb){// it's a blocker
+ return res;
+ }
+ if(((err&0xbb)==0xbb)||// it's an object
+ ((err&ccc_lWalk_on)==ccc_lWalk_on)// it's an walk Lem
+ ){continue;}
+
+ if(err==ccc_bgStencil){
+ return res;
}
}
return res;
@@ -1241,12 +1250,27 @@ int checkPixelUP(int nbr, int x, int y, int size ){
err=get_pixel32(x,y,pStencil);
if(err==ccc_error){return 115;}
+
+ if((err&0xcb)==0xcb){// it's a blocker
+ return 0;
+ }
+
+ if(((err&0xbb)==0xbb)||// it's an object
+ ((err&ccc_lWalk_on)==ccc_lWalk_on)// it's an walk Lem
+ ){return 0;}
+
+ if(err==ccc_bgStencil){
+ return 1;
+ }
+ /*
+
if((err&0xbb)!=0xbb){
//if(err!=(ccc_lWalk_on & ccc_bgStencil)){
if((err|ccc_lWalk_on)!=ccc_bgStencil){
return 1;
}
}
+ */
return 0;
}
@@ -1277,7 +1301,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){
if(err==ccc_error){return 116;}
if(err==ccc_lWalk_on){return 2;}
- printf("err %p\n",err);
+ //printf("err %p\n",err);
if (err == ccc_lStopperLeft && dir==1) {//Right
//LEFT;
@@ -1330,6 +1354,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){
fx=gInit->mapI.lemmingDATA[newID].footX;
fy=gInit->mapI.lemmingDATA[newID].footY;
+ //k->y-=gInit->mapI.lemmingDATA[0].footY-fy;
fs=gInit->mapI.lemmingDATA[newID].footSize;
lState=gInit->mapI.lemmingDATA[newID].state;
@@ -1364,13 +1389,12 @@ int checkPixelUP(int nbr, int x, int y, int size ){
switch(k->ID){
case 3 : // climber_to_walker
- {printf("climber_to_walker ->");
+ printf("climber_to_walker ->");
if(boom){
explode (k->x+fx,k->y+fy,fs);
k->ID=10;//BOMBER
break;
}
- } break;
case 1 : // faller
{printf("faller ->");
if(boom){
@@ -1399,7 +1423,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){
k->ID=5;//SPLAT
} else {
k->ID=0;//WALKER
- k->y-=2;
+ //k->y-=2;
k->data.pl->cptFall=0;
}
}
@@ -1548,7 +1572,6 @@ int checkPixelUP(int nbr, int x, int y, int size ){
k->ID=17;
}
break;
-
case 2 : // CLIMBER
printf("CLIMBER ->");
if(boom){
@@ -1559,7 +1582,8 @@ int checkPixelUP(int nbr, int x, int y, int size ){
if ( (++(k->data.pl->cptFall) & 1) == 1) // only every other step
{k->y -= CLIMBER_STEP;}
- err=checkPixelUP(2,k->x+fx,k->y+fy,fs);
+ err=(k->data.pl->dir==1) ? -3 : 3 ;
+ err=checkPixelUP(2,k->x+fx+err,k->y+fy,fs);
if(err==113){return 127;}
if (midY(k->y+fy,fs) < 0 || err<2) {
k->data.pl->dir = (k->data.pl->dir==1) ? 0 : 1 ;
@@ -1663,6 +1687,9 @@ int checkPixelUP(int nbr, int x, int y, int size ){
}
k->data.pl->cptBrick=0;
k->data.pl->cptState=0;
+ // k->y+=5;
+ k->ID=0;
+
break;
case 11: // BUILDER
@@ -1683,6 +1710,8 @@ int checkPixelUP(int nbr, int x, int y, int size ){
k->data.pl->dir=err;
break;
}
+ /* if((k->data.pl->cptState==0)&&
+ (k->data.pl->cptBrick==0)){k->y-=5;}*/
k->data.pl->cptState++;
if(k->data.pl->cptState >= lState){
@@ -1703,6 +1732,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){
if(err==113){return 113;}
fa=err;
if(fa<8|| levitation > 0){
+ // k->y+=5;
k->ID=0;//WALKER
// a lemming can jump through the ceiling like in Mayhem2-Boiler Room
if (levitation >= WALKER_OBSTACLE_HEIGHT) {
@@ -2525,7 +2555,7 @@ int checkPixelUP(int nbr, int x, int y, int size ){
//DEBUT TEST CREATION UN LEMMING
// DEBUT DEBUG: LEMMING COLLISION
- //gInit->mapI.paraMap[1]=1;
+ gInit->mapI.paraMap[1]=1;
// FIN DEBUG: LEMMING COLLISION
nbLem=gInit->mapI.paraMap[1];
@@ -2794,6 +2824,82 @@ int checkPixelUP(int nbr, int x, int y, int size ){
return 0;
}
+
+int miniMap (SDL_Surface *s, int x0, int y0, float coefX, float coefY){
+
+
+ int i,j,stepX,stepY,sizeX,sizeY,w0,h0;
+ SDL_Rect rect;
+ Uint32 err;
+
+ if((x0 < 0)||
+ (y0 < 0)||
+ (coefX < 0.)||
+ (coefY < 0.)||
+ (s->pixels == NULL)
+ ){
+ printf("Bug Error x0 %d y0 %d coefX %f coefY %f s->pixels %p \n",x0,y0,coefX,coefY,s->pixels);
+ return 189;
+ }
+
+
+ //printf("x0 %d y0 %d w0 %d h0 %d coefX %f coefY %f s->pixels %p \n",x0,y0,w0,h0,coefX,coefY,s->pixels);
+
+ // if coef >= 1 then zoom++ else zoom--;
+ stepX=((((int)(1./coefX))==0)? 1 : ((int)(1./coefX)));
+ stepY=((((int)(1./coefY))==0)? 1 : ((int)(1./coefY)));
+
+ sizeX=((((int)(1./coefX))==0)? (int)coefX : 1);
+ sizeY=((((int)(1./coefY))==0)? (int)coefY : 1);
+
+ /*if(stepX==0){stepX=1;}
+ if(stepY==0){stepY=1;}
+ if(sizeX==0){sizeX=1;}
+ if(sizeY==0){sizeY=1;}
+ */
+
+ rect.w=sizeX;
+ rect.h=sizeY;
+
+ //printf("sx %d sy %d w %d h %d \n",stepX,stepY,sizeX,sizeY);
+ //printf("h0 %d -> stepY %d, w0 %d -> stepX %d x0 %d y0 %d \n",stepX,stepY,sizeX,sizeY);
+
+ w0=MINIMAP_MX/stepX;
+ h0=MINIMAP_MY/stepY;
+
+
+ if(w0 + x0 >LEVEL_WIDTH){
+ w0=LEVEL_WIDTH-x0;
+ }
+ if(h0 + y0 > LEVEL_HEIGHT){
+ h0=LEVEL_HEIGHT-y0;
+ }
+
+ if((w0 + x0 >LEVEL_WIDTH)||(h0 + y0 > LEVEL_HEIGHT)){return 0;}
+
+
+ for(j=0;j<h0;j+=stepY){
+ for(i=0;i<w0;i+=stepX){
+ err=get_pixel32(x0+i,y0+j,s);
+ if(err==ccc_error){return 123;}
+
+ rect.x=MINIMAP_X0+(i/stepX)*sizeX;
+ rect.y=MINIMAP_Y0+(j/stepY)*sizeY;
+
+ if(rect.x>MINIMAP_X0+MINIMAP_MX){continue;}
+ if(rect.y>MINIMAP_Y0+MINIMAP_MY){continue;}
+ if(rect.w+rect.x>MINIMAP_X0+MINIMAP_MX){continue;}
+ if(rect.h+rect.y>MINIMAP_Y0+MINIMAP_MY){continue;}
+
+ SDL_FillRect(s, &rect, err);
+
+ }
+ }
+
+
+ return 0;
+}
+
int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){
return SDL_BlitSurface(spr,from, t,to);
@@ -3163,7 +3269,7 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){
// offset.h = objetAnim.h;
switch(newID){
case 0: {// WALK_ON
- putPixel(pStencil,k->x+fx+fs,k->y+fy,ccc_lWalk_on);
+ //putPixel(pStencil,k->x+fx+fs,k->y+fy,ccc_lWalk_on);
//SDL_FillRect(pStencil, &offset, ccc_lWalk_on);
break;
}
@@ -3230,7 +3336,16 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){
k->ID=6;
}
break;
- case 11 : ;break;//builder
+ //builder
+ case 11 : if(((k->ID==0)||((k->ID>9)&&(k->ID<17)))&&
+ (gInit->mapI.paraMap[7]>0)
+ /*&&(k->data.pl->blocker==0)*/
+ ){
+ --gInit->mapI.paraMap[8];
+ //k->data.pl->cptBrick=12;
+ k->ID=11;
+ }
+ break;
case 14 : ;break;//basher
case 15 : ;break;//miner
case 13 : ;break;//digger
@@ -3791,11 +3906,15 @@ int test_blit(SDL_Surface *spr,SDL_Rect *from,SDL_Surface *t,SDL_Rect *to){
//get_pixel32( event.motion.x + camera.x, event.motion.y, pSpr_Lem );
//get_pixel32( event.motion.x + camera.x , event.motion.y, screen );
+
if(paint_stencil==0){
test_blit(pSpr_Lem, &camera, screen, NULL);
} else {
test_blit(pStencil, &camera, screen, NULL);
}
+ err=miniMap (screen,mouseX,mouseY,4,4);
+ if( err != 0){ return err;}
+
/* FPS counter */
//printf("(tick %ld > fps_start %d +500)\n",tick,fps_start);