diff options
author | Damien Appert <dappert> | 2010-11-05 18:41:34 +0000 |
---|---|---|
committer | Damien Appert <dappert> | 2010-11-05 18:41:34 +0000 |
commit | a2f80fa0907ea8d50a327bb1a69435094ddc321d (patch) | |
tree | 3f3c1500d48df81e7a8814448d3af014c41f921e /sdl-test | |
parent | cfe6e4d7d3acf279bb958d2222d1f29fea6b777b (diff) | |
download | 2010-netlemmings-a2f80fa0907ea8d50a327bb1a69435094ddc321d.tar.gz 2010-netlemmings-a2f80fa0907ea8d50a327bb1a69435094ddc321d.tar.bz2 2010-netlemmings-a2f80fa0907ea8d50a327bb1a69435094ddc321d.zip |
script generation terrain + patch pour bug
git-svn-id: file:///var/svn/2010-netlemmings/trunk@135 077b3477-7977-48bd-8428-443f22f7bfda
Diffstat (limited to 'sdl-test')
3 files changed, 328 insertions, 120 deletions
diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c b/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c index febe413..8d29498 100644 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/fonctions_non_integrees.c @@ -500,9 +500,10 @@ int stateLemming(struct gameInit *gInit){ if(paint_bomber(k->x,k->y,lw,gInit->mapI.map.tabGif[2],pSpr_Lem,(k->data.pl->cptBoom/FPS +1))!=0){return 99;} } } - + + flip = 0; //flipDirBorder - if (k->data.pl->dir==1) {//right + if (k->data.pl->dir==0) {//left if (k->x<0) { k->x=0; flip = 1; @@ -512,7 +513,7 @@ int stateLemming(struct gameInit *gInit){ } } //if (selectCtr>0) {selectCtr--;} - if (flip) {k->data.pl->dir = (k->data.pl->dir==1) ? 0 : 1 ;} + if (flip==1) {k->data.pl->dir = (k->data.pl->dir==1) ? 0 : 1 ;} switch(k->ID){ @@ -982,8 +983,10 @@ int stateLemming(struct gameInit *gInit){ // trap if(k->ID != 7 && k->ID != 8 && k->ID != 9 && k->ID != 17){ - //middle of lemming => pixel red - err=get_pixel32(k->x+lw/2,k->y+fy,pStencil); + //middle of lemming => pixel marron -9 + err=putPixel(pSpr_Lem,k->x+lw/2,k->y+fy-fs,0xf0f0ff); + if(err==ccc_error){return 14;} + err=get_pixel32(k->x+lw/2,k->y+fy-fs,pStencil); if(err==ccc_error){return 12;} //-DEBUG-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){ @@ -1437,7 +1440,7 @@ int stateLemming(struct gameInit *gInit){ gInit->mapI.map.tabGif[18]= load_image("../../../misc/imask_15.gif",ccc_cursor); if ( gInit->mapI.map.tabGif[18] == NULL ) { //-DEBUG-printf("ERREUR load_file imask_15.gif: %s\n", "../../../misc/imask_15.gif"); - return(38); + return(76); } //icone.gif @@ -1755,7 +1758,7 @@ int stateLemming(struct gameInit *gInit){ struct listeSimplementChainee *kTemp=NULL; SDL_Surface *sf=NULL; - int coorE[10][2]; + int coorE[100][2]; int i=0; //DEBUT TEST CREATION UN LEMMING @@ -1769,7 +1772,7 @@ int stateLemming(struct gameInit *gInit){ if(gInit->mapI.nbrEntry==0){ //-DEBUG-printf("ERREUR ALGO: nbrEntry == 0\n"); - return(37); + return(77); } @@ -1786,8 +1789,8 @@ int stateLemming(struct gameInit *gInit){ coorE[i][1]=k->y; ++i; if(i>=gInit->mapI.nbrEntry){break;} - if(i>9){//-DEBUG-printf("ERREUR: too many entry\n"); - return(38);} + if(i>99){//-DEBUG-printf("ERREUR: too many entry\n"); + return(88);} } k=k->next; } @@ -2493,7 +2496,7 @@ int stateLemming(struct gameInit *gInit){ return err; } ++objetAnim.h; - test_FillRect(pStencil, &rStencil, ccc_oTrapAndNoLem); + //test_FillRect(pStencil, &rStencil, ccc_oTrapAndNoLem); break; } case 7:{//trap which triggers lemming death animation @@ -3330,11 +3333,11 @@ int lancement (){ if(paint_stencil==0){ // printf("test %p\n",pSpr_Lem); test_blit(pSpr_Lem, &camera, screen, NULL); - err=miniMap (pSpr_Lem,mouseX+camera.x,mouseY+camera.y,5.,5.);//0.10,0.10); + err=miniMap (pSpr_Lem,mouseX+camera.x,mouseY+camera.y,0.10,0.10);//0.10,0.10); 5.,5.); if( err != 0){ return err;} } else { test_blit(pStencil, &camera, screen, NULL); - err=miniMap (pStencil,mouseX+camera.x,mouseY+camera.y,5.,5.); + err=miniMap (pStencil,mouseX+camera.x,mouseY+camera.y,0.10,0.10); if( err != 0){ return err;} } diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/genereTerrain.sh b/sdl-test/SDL_tuto/TestParserLemmingsLVL/genereTerrain.sh index d5e53c0..3915066 100755 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/genereTerrain.sh +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/genereTerrain.sh @@ -1,33 +1,42 @@ #!/bin/sh path="../../../styles" +pathDst="../../../level/3_test" style="unknown" numObjet="0" typeObjet="0" numTerrain="0" +numTerrainStop="0" xObjet=0 wObjet=0 hObjet=0 fObjet=1 +hDoor=15 yObjet=200 -hDoor=$(($yObjet-100)) -yTerrain=$(($yObjet-$hDoor/2)) +yTerrain=105 cpt=0 cptFrame=1 cptT=0 mode=0 wTerrain=0 +hTerrainStop=0 stepTerrain=20 -> ./lvlStyleT.ini +numStyle=0 +numObjetTest=99 +cptTestObjet=30 +information=0 + + +> ./Source/lvlStyleT.ini echo " # Terrain # id, xpos, ypos, modifier # modifier: 8=NO_OVERWRITE, 4=UPSIDE_DOWN, 2=REMOVE (combining allowed, 0=FULL) -" >> ./lvlStyleT.ini +" >> ./Source/lvlStyleT.ini -if [ $# -eq 1 ] +if [ $# -ge 1 ] then style=$1 if [ $(ls $path | grep -ce "^$style$") -ne 1 ] @@ -40,32 +49,80 @@ if [ $# -eq 1 ] echo "Default: Style $style load" fi +if [ $# -ge 2 ] + then + case $2 in + '-i' | '-information' ) + information=1 + ;; + *) + echo "USE : $0 <styleMap> [[<-i|-information>] <ID_objet> ] " + ;; + esac + else + information=$information +fi + +if [ $# -ge 3 ] + then + numObjetTest=$3 + if [ $(ls $path/$style | grep -ce "^$style""o_$numObjetTest.gif$") -ne 1 ] + then echo "Objet [$style""o_$numObjetTest.gif] unknown !"; + numObjetTest=99; + echo "Default: All Object load" + else echo "Style $style""o_$numObjetTest.gif load"; + echo "numObjetTest $numObjetTest" + fi + else + numObjetTest=99 + echo "Default: All Object load" +fi + + if [ $style = "brick" ] - then numTerrain=5 + then numTerrain=1; + numStyle=1; + numTerrainStop=30 else if [ $style = "bubble" ] - then numTerrain=49 + then numTerrain=45; + numStyle=2 + numTerrainStop=60 else if [ $style = "crystal" ] - then numTerrain=27 + then numTerrain=27; + numStyle=3 + numTerrainStop=32 else if [ $style = "dirt" ] - then numTerrain=29 + then numTerrain=29; + numStyle=4 + numTerrainStop=24 else if [ $style = "fire" ] - then numTerrain=1 + then numTerrain=1; + numStyle=5 + numTerrainStop=21 else if [ $style = "marble" ] - then numTerrain=9 + then numTerrain=9; + numStyle=6 + numTerrainStop=47 else if [ $style = "pillar" ] - then numTerrain=0 + then numTerrain=44; + numStyle=7 + numTerrainStop=13 else if [ $style = "rock" ] - then numTerrain=13 + then numTerrain=13; + numStyle=8 + numTerrainStop=46 else if [ $style = "snow" ] - then numTerrain=24 + then numTerrain=31; + numStyle=9 + numTerrainStop=16 else echo "special is't good for test !"; exit 0 @@ -80,6 +137,7 @@ if [ $style = "brick" ] fi wTerrain=$(giftopnm -comment $path/$style/$style"_"$numTerrain".gif" | head -n2 | tail -n1 | cut -f1 -d' ') +hTerrainStop=$(giftopnm -comment $path/$style/$style"_"$numTerrainStop".gif" | head -n2 | tail -n1 | cut -f2 -d' ') echo "# LVL extracted by Lemmini #LVL0041.LVL releaseRate = 1 @@ -99,121 +157,232 @@ style = $style # Objects # id, xpos, ypos, paint mode (), upside down (0,1) -# paint modes: 8=VIS_ON_TERRAIN, 4=NO_OVERWRITE, 0=FULL (only one value possible)" > ./lvlStyle.ini +# paint modes: 8=VIS_ON_TERRAIN, 4=NO_OVERWRITE, 0=FULL (only one value possible)" > $pathDst/lvl200$numStyle.ini -for i in $(grep "type_" $path/$style/$style.ini | tr ' ' '-') +for k in $(grep "type_" $path/$style/$style.ini | tr ' ' '-') do -yObjet=200 -hDoor=$(($yObjet-100)) -yTerrain=$(($yObjet-$hDoor/2)) + hDoor=15 + yObjet=200 + yTerrain=$(($hDoor+90)) + + for j in $(seq 1 $cptTestObjet) + do + #echo "j == $j" + #echo "numObjetTest ==> $numObjetTest" + + if [ $numObjetTest -eq 99 ] + then numObjet=$(echo $k | tr '-' ' ' | cut -f2 -d'_' | cut -f1 -d' ') + else numObjet=$numObjetTest + fi + #echo "numObjet ==> $numObjet" + if [ $numObjetTest -eq 99 ] + then typeObjet=$(echo $k | tr '-' ' ' | cut -f2 -d'=' | cut -f2 -d' ') + else typeObjet=$(grep "type_$numObjet" $path/$style/$style.ini | cut -f2 -d'=' | cut -f2 -d' ') + fi + #echo "typeObjet ==> $typeObjet" -numObjet=$(echo $i | tr '-' ' ' | cut -f2 -d'_' | cut -f1 -d' ') -typeObjet=$(echo $i | tr '-' ' ' | cut -f2 -d'=' | cut -f2 -d' ') + wObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f1 -d' ' ) + #echo $wObjet + hObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f2 -d' ' ) -wObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f1 -d' ' ) -#echo $wObjet -hObjet=$(giftopnm -comment $path/$style/$style"o_"$numObjet".gif" | head -n2 | tail -n1 | cut -f2 -d' ' ) -if [ $typeObjet -eq "5" ] - then mode=4 - else - if [ $typeObjet -eq "6" ] - then mode=4 - else - if [ $typeObjet -eq "7" ] - then mode=4 - else mode=99 + + if [ $numObjetTest -ne 99 ] + then + if [ $typeObjet -eq "5" ] + then mode=0 + else + if [ $typeObjet -eq "6" ] + then mode=0 #4 + else + if [ $typeObjet -eq "7" ] + then mode=0 + else mode=99 + fi + fi fi + else + if [ $typeObjet -eq "5" ] + then mode=0 + else + if [ $typeObjet -eq "6" ] + then mode=0 #4 + else + if [ $typeObjet -eq "7" ] + then mode=0 + else mode=99 + fi + fi + fi fi -fi -if [ $mode -lt 99 ] - then - - fObjet=$(grep "frames_$numObjet" $path/$style/$style.ini | cut -f2 -d'=' | cut -f2 -d' ') - cptFrame=0 - #echo $fObjet - while [ "$cptFrame" -ne "$fObjet" -a "$cptFrame" -ne "99" ] - do - cptFrame=$(($cptFrame+1)) - done - #echo $cptFrame - hObjet=$(($hObjet/$cptFrame)) - - #Entry - echo "object_$cpt = 1, $xObjet, $hDoor, $mode, 0" >> ./lvlStyle.ini - cpt=$(($cpt+1)) - echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./lvlStyleT.ini - xObjet=$(($xObjet + $stepTerrain)) - cptT=$(($cptT+1)) - - for i in $(seq 1 13) - do - echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./lvlStyleT.ini - xObjet=$(($xObjet + $stepTerrain)) - yTerrain=$(($yTerrain+$i)) - cptT=$(($cptT+1)) - done - - if [ "$cpt" -eq "1" ] + if [ $information -eq 1 -a $mode -eq 99 -a $j -eq 1 ] + then echo "----------------------------------" + echo "File: "$style"_"$numObjet".gif:" + echo "Style_Map: "$numStyle + echo "Type_Objet: "$typeObjet + echo "Mode: "$mode + echo "Width: "$wObjet + echo "Height_GIF: "$hObjet + else mode=$mode + fi + + + if [ $mode -lt 99 ] then - for i in $(seq 1 13) + + fObjet=$(grep "frames_$numObjet" $path/$style/$style.ini | cut -f2 -d'=' | cut -f2 -d' ') + cptFrame=0 + #echo $fObjet + while [ "$cptFrame" -ne "$fObjet" -a "$cptFrame" -ne "99" ] do - echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./lvlStyleT.ini - xObjet=$(($xObjet + $stepTerrain)) - yTerrain=$(($yTerrain-$i)) - cptT=$(($cptT+1)) + cptFrame=$(($cptFrame+1)) done - else cptT=$cptT - fi + #echo $cptFrame + hObjet=$(($hObjet/$cptFrame)) + + if [ $information -eq 1 -a $j -eq 1 ] + then echo "\t----------------------------------" + echo "\t File: "$style"_"$numObjet".gif:" + echo "\t Style_Map: "$numStyle + echo "\t /!\ Type_Objet: "$typeObjet + echo "\t Mode: "$mode + echo "\t Width: "$wObjet + echo "\t Height: "$hObjet + else mode=$mode + fi - for i in $(seq 1 5) - do - echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./lvlStyleT.ini - xObjet=$(($xObjet + $stepTerrain)) - cptT=$(($cptT+1)) - done + if [ $hObjet -gt 90 ] + then yTerrain=$(($hDoor + $hObjet )) + else yTerrain=$yTerrain + fi - if [ $typeObjet -eq "5" ] - then yObjet=$(($yTerrain+$hObjet)) - else - if [ $typeObjet -eq "6" ] - then yObjet=$(($yTerrain-$hObjet)) - else - if [ $typeObjet -eq "7" ] - then yObjet=$(($yTerrain-$hObjet)) - else yObjet=$yTerrain - fi - fi + if [ $yTerrain -ge 320 ] + then break + else yTerrain=$yTerrain fi + + #Entry + if [ "$cpt" -eq "0" -o $numObjetTest -ne 99 ] #pour les objets specifiques + then + echo "object_$cpt = 1, $xObjet, $hDoor, $mode, 0" >> $pathDst/lvl200$numStyle.ini + cpt=$(($cpt+1)) + + #echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./Source/lvlStyleT.ini + #xObjet=$(($xObjet + $stepTerrain)) + #cptT=$(($cptT+1)) - #Trap + if [ $numObjetTest -eq 99 ] #pour all + then + for i in $(seq 1 13) + do + echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./Source/lvlStyleT.ini + xObjet=$(($xObjet + $stepTerrain)) + yTerrain=$(($yTerrain+$i)) + cptT=$(($cptT+1)) + done + + if [ "$cpt" -eq "1" ] + then + for i in $(seq 1 13) + do + echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./Source/lvlStyleT.ini + xObjet=$(($xObjet + $stepTerrain)) + yTerrain=$(($yTerrain-$i)) + cptT=$(($cptT+1)) + done + else + cptT=$cptT + fi + else + cptT=$cptT + fi #FIN pour all + else + cptT=$cptT + fi #FIN pour les objets specifiques - yObjet=$(($yObjet-20)) - for dep in $(seq 1 20) - do - yObjet=$(($yObjet+5)) - xObjet=$(($xObjet+1)) - echo "object_$cpt = $numObjet, $xObjet, $yObjet, $mode, 0" >> ./lvlStyle.ini - cpt=$(($cpt+1)) - done + if [ $numObjetTest -ne 99 ] + then stepTerrain=40 + else stepTerrain=20 + fi + maxT=$(($wObjet/$stepTerrain + 6 )) - xObjet=$(($xObjet + $wObjet)) + for i in $(seq 1 $maxT) + do + echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 8" >> ./Source/lvlStyleT.ini + cptT=$(($cptT+1)) + yTerrain=$(($yTerrain+4)) + echo "terrain_$cptT = $numTerrain, $xObjet, $yTerrain, 2" >> ./Source/lvlStyleT.ini + yTerrain=$(($yTerrain-4)) + xObjet=$(($xObjet + $stepTerrain)) + cptT=$(($cptT+1)) + done + if [ $typeObjet -eq "5" ] + then yObjet=$(($yTerrain-$hObjet)) + else + if [ $typeObjet -eq "6" ] + then yObjet=$(($yTerrain-$hObjet)) + else + if [ $typeObjet -eq "7" ] + then yObjet=$(($yTerrain-$hObjet)) + else yObjet=$yTerrain + fi + fi + fi - else - echo "objet $numObjet de type $typeObjet IGNORER" -fi + #Trap + #echo "here" + + # if [ $yObjet -ge 0 -a $xObjet -ge 0 -a $yObjet -lt 320 -a $xObjet -lt 3300 ] + # then + yObjet=$(($yObjet+$j*2-$cptTestObjet/2)) + xObjet=$(($xObjet-($maxT-2)*$stepTerrain)) + echo "object_$cpt = $numObjet, $xObjet, $yObjet, $mode, 0" >> $pathDst/lvl200$numStyle.ini + cpt=$(($cpt+1)) + xObjet=$(($xObjet + $wObjet)) + + yObjet=$(($yTerrain-$hTerrainStop+10)) + echo "terrain_$cptT = $numTerrainStop, $xObjet, $yObjet, 0" >> ./Source/lvlStyleT.ini + + if [ $xObjet -ge 3000 ] + then xObjet=0; + hDoor=$(($yTerrain + 10)) ; + yTerrain=$(($hDoor + 90)) + else + xObjet=$xObjet + fi + # else + # xObjet=$xObjet + # fi + else + #echo "objet $numObjet de type $typeObjet IGNORER" + echo "==> Objet ignorer" + fi + + if [ $numObjetTest -eq 99 ] + then break + else numObjetTest=$numObjetTest + fi + + done + + if [ $numObjetTest -ne 99 ] + then break + else numObjetTest=$numObjetTest + fi + done -cat ./lvlStyleT.ini >> ./lvlStyle.ini -rm ./lvlStyleT.ini +cat ./Source/lvlStyleT.ini >> $pathDst/lvl200$numStyle.ini +rm ./Source/lvlStyleT.ini #Name echo "name = test $style -" >> ./lvlStyle.ini +" >> $pathDst/lvl200$numStyle.ini exit 0 + diff --git a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy index 91147f7..cba649c 100644 --- a/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy +++ b/sdl-test/SDL_tuto/TestParserLemmingsLVL/parse_ini.yy @@ -825,7 +825,7 @@ default: //-DEBUG-printf("BUG parser: state = %d\n",state); exit(6); } - + while (curr!=NULL) { // //-DEBUG-printf("%i ", curr->val); switch(i) { @@ -833,13 +833,47 @@ case 0: k->ID=curr->val; break; case 3: k->x=curr->val; break; case 2: k->y=curr->val; break; - case 1: k->data.pt->modif=curr->val; break; + case 1: { + k->data.pt->modif=curr->val; + switch(k->data.pt->modif){ + case 0: + case 2: + case 4: + case 6: + case 8: + case 10: + case 12: + case 14: + case 15: + break; + default: printf("Erreur valeur interdite pour modif Terrain %d\n",k->data.pt->modif);exit (9); + } + break; + } // pour les objets case 4: k->ID=curr->val; if(k->ID==1){++gInit->mapI.nbrEntry;} break; case 8: k->x=curr->val; break; case 7: k->y=curr->val; break; - case 6: k->data.po->paintMode=curr->val; break; - case 5: k->data.po->UD = curr->val; break; + case 6: { + k->data.po->paintMode=curr->val; + switch(k->data.po->paintMode){ + case 0: + case 2: + case 4: + case 8: + break; + default: printf("Erreur valeur interdite pour paint Objet %d\n",k->data.po->paintMode);exit (19); + } + break; + } + case 5: { + k->data.po->UD = curr->val; + if((k->data.po->UD!=0)&&(k->data.po->UD!=1)){ + printf("Erreur valeur interdite pour UD Objet %d\n",k->data.po->UD); + exit (29); + } + break; + } // pour les steels case 9: k->x=curr->val; break; case 12: k->y=curr->val; break; @@ -935,6 +969,7 @@ int main (int argc, char **argv) fprintf(stderr, "Usage %s [Option] <Filename>\n",argv[0]); fprintf(stderr,"\nOption:\n\t- 1: on se place dans le dossier 1_orig\n"); fprintf(stderr,"\t- 2: on se place dans le dossier 2_ohno\n"); + fprintf(stderr,"\t- 3: on se place dans le dossier 3_test\n"); fprintf(stderr,"Filename:\n\t- numero du lvl (ex: 1, 4, 13, 65b )\n"); return(44); } @@ -960,6 +995,7 @@ int main (int argc, char **argv) switch(atoi(argv[1])){ case 1 : sprintf(temp,"../../../../trunk/level/1_orig/lvl0%s%d.ini",temp0,num);break; case 2 : sprintf(temp,"../../../../trunk/level/2_ohno/lvl1%s%d.ini",temp0,num);break; + case 3 : sprintf(temp,"../../../../trunk/level/3_test/lvl2%s%d.ini",temp0,num);break; default:fprintf(stderr,"ERREUR: dossier [%d] inconnu\n",atoi(argv[1]));return(47); } } else { |