summaryrefslogtreecommitdiff
path: root/sdl-test
diff options
context:
space:
mode:
authorDamien Appert <dappert>2010-11-07 01:35:27 +0000
committerDamien Appert <dappert>2010-11-07 01:35:27 +0000
commit06742f5f2cc4eed2f3ad3ae44c2544fbf8215e8e (patch)
tree5b6bb8378cf5306af69d19c28e219e59fb87dc32 /sdl-test
parentbb8d3f0f67234d333dcce265dbc3b1f844c8f4bc (diff)
download2010-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.c97
-rw-r--r--sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy106
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