diff --git a/Entity.c b/Entity.c index 73adc35..68f6c45 100644 --- a/Entity.c +++ b/Entity.c @@ -241,7 +241,6 @@ int Entity_Collide(Entity *b1,Entity *b2){ float t; vec2 n; vec2 vel; - Entity *b_aux; //if(!(b1->flags&EntityFlag_Collision) || !(b2->flags&EntityFlag_Collision)) // return(0); @@ -296,7 +295,6 @@ int Entity_Collide(Entity *b1,Entity *b2){ // void Entity_Overlaps(Entity *b1,Entity *b2){ vec2 len; - float dist; // if(!(b1->flags&EntityFlag_Overlap) || !(b2->flags&EntityFlag_Overlap)) // return; @@ -415,7 +413,7 @@ void Entity_SetLight(Entity *e,float r,float g,float b,float rad){ void Entity_Iluminate(Entity *e,Entity **elist,int n){ int i; vec2 vdist; - float qdist,dist,f; + float qdist,f; float qrad; if(!(e->flags&EntityFlag_Light)){ diff --git a/GameEnts.c b/GameEnts.c index 565b0e5..2e2c21b 100644 --- a/GameEnts.c +++ b/GameEnts.c @@ -71,15 +71,7 @@ Entity *ent_arrow_left; Entity *ent_arrow_right; Entity *ent_exitpoint; Entity *ent_endpoint; -Entity *ent_savepoint_1; -Entity *ent_savepoint_2; -Entity *ent_savepoint_3; -Entity *ent_savepoint_4; -Entity *ent_savepoint_5; -Entity *ent_savepoint_6; -Entity *ent_savepoint_7; -Entity *ent_savepoint_8; -Entity *ent_savepoint_9; +Entity *ent_savepoint; Entity *ent_fire; Entity *ent_player_broken; @@ -570,32 +562,15 @@ void GameEnts_Init(){ ent_arrowshooter_right->child=ent_arrow_right; - ent_savepoint_1=Entity_Copy(ent); - ent_savepoint_1->type=Ent_SavePoint; - ent_savepoint_1->zorder=0; - ent_savepoint_1->flags=EntityFlag_Overlap|EntityFlag_Light; - ent_savepoint_1->radius=20; - Entity_SetLight(ent_savepoint_1,0.0f,0.0f,0.5f,2*32.0f); - AnimPlay_SetImg(&ent_savepoint_1->anim,img_savepoint); - ent_savepoint_1->overlap=savepoint_overlap; - ent_savepoint_1->ondelete=savepoint_ondelete; - ent_savepoint_1->A=1; - ent_savepoint_2=Entity_Copy(ent_savepoint_1); - ent_savepoint_2->A=2; - ent_savepoint_3=Entity_Copy(ent_savepoint_1); - ent_savepoint_3->A=3; - ent_savepoint_4=Entity_Copy(ent_savepoint_1); - ent_savepoint_4->A=4; - ent_savepoint_5=Entity_Copy(ent_savepoint_1); - ent_savepoint_5->A=5; - ent_savepoint_6=Entity_Copy(ent_savepoint_1); - ent_savepoint_6->A=6; - ent_savepoint_7=Entity_Copy(ent_savepoint_1); - ent_savepoint_7->A=7; - ent_savepoint_8=Entity_Copy(ent_savepoint_1); - ent_savepoint_8->A=8; - ent_savepoint_9=Entity_Copy(ent_savepoint_1); - ent_savepoint_9->A=9; + ent_savepoint=Entity_Copy(ent); + ent_savepoint->type=Ent_SavePoint; + ent_savepoint->zorder=0; + ent_savepoint->flags=EntityFlag_Overlap|EntityFlag_Light; + ent_savepoint->radius=20; + Entity_SetLight(ent_savepoint,0.0f,0.0f,0.5f,2*32.0f); + AnimPlay_SetImg(&ent_savepoint->anim,img_savepoint); + ent_savepoint->overlap=savepoint_overlap; + ent_savepoint->ondelete=savepoint_ondelete; ent_exitpoint=Entity_Copy(ent); diff --git a/GameEnts.h b/GameEnts.h index 1b788de..1a86ba7 100644 --- a/GameEnts.h +++ b/GameEnts.h @@ -42,14 +42,6 @@ extern Entity *ent_arrow_left; extern Entity *ent_arrow_right; extern Entity *ent_exitpoint; extern Entity *ent_endpoint; -extern Entity *ent_savepoint_1; -extern Entity *ent_savepoint_2; -extern Entity *ent_savepoint_3; -extern Entity *ent_savepoint_4; -extern Entity *ent_savepoint_5; -extern Entity *ent_savepoint_6; -extern Entity *ent_savepoint_7; -extern Entity *ent_savepoint_8; -extern Entity *ent_savepoint_9; +extern Entity *ent_savepoint; #endif diff --git a/GameLib.c b/GameLib.c index a5c8e34..179ba54 100644 --- a/GameLib.c +++ b/GameLib.c @@ -288,7 +288,6 @@ int GameLib_ProcLoop(){ time=Time_GetTime(); GameLib_Compactate();_entities_lock=1; for(i=0;i<_n_entities;i++){ - Entity *e; Entity_PostProcess(_entity[i],_ft); if(_entity[i]->flags&EntityFlag_UpdatedPos){ GameLib_EntityUpdateLight(_entity[i]); diff --git a/GameMap.c b/GameMap.c index 7cd6f66..ddfc91c 100644 --- a/GameMap.c +++ b/GameMap.c @@ -8,11 +8,12 @@ #include "GameMap.h" -void GameMapAux_CreateEnt(Entity *ent,int i,int j){ +Entity *GameMapAux_CreateEnt(Entity *ent,int i,int j){ Entity *e; e=Entity_Copy(ent); vec2_set(e->pos,16+i*32,16+j*32); GameLib_AddEntity(e); + return(e); } void Aux_Linea(FILE *f,char *line){ @@ -56,15 +57,7 @@ int GameMapAux_IsFloor(char c){ c=='#' || c=='m' || c=='B' || - c=='1' || - c=='2' || - c=='3' || - c=='4' || - c=='5' || - c=='6' || - c=='7' || - c=='8' || - c=='9' || + c=='S' || c=='E' || c=='F' || c=='A' || @@ -84,7 +77,7 @@ int GameMap_CreateLevel(int level,int point){ FILE *file; char line[1024]; int w,h; - int i,j; + int i,j,i2; int floor; sprintf(filename,"data/level_%02d.txt",level); @@ -100,19 +93,20 @@ int GameMap_CreateLevel(int level,int point){ for(j=0;j0){ - if(GameMapAux_IsFloor(line[i-1])){ + if(GameMapAux_IsFloor(line[i2-2])){ floor|=4; } } if(i<(w-1)){ - if(GameMapAux_IsFloor(line[i+1])){ + if(GameMapAux_IsFloor(line[i2+2])){ floor|=1; } } - if(GameMapAux_IsFloor(line[i])){ + if(GameMapAux_IsFloor(line[i2])){ floor|=2; } if(floor==7){ @@ -130,94 +124,64 @@ int GameMap_CreateLevel(int level,int point){ // Put the rest of the entities - if(line[i]=='.'){ + if(line[i2]=='.'){ // Floor }else - if(line[i]=='#'){ + if(line[i2]=='#'){ // Column GameMapAux_CreateEnt(ent_column,i,j); }else - if(line[i]=='m'){ + if(line[i2]=='m'){ // Column faded GameMapAux_CreateEnt(ent_column_faded,i,j); }else - if(line[i]=='r'){ + if(line[i2]=='r'){ // Rock GameMapAux_CreateEnt(ent_rock,i,j); }else - if(line[i]=='l'){ + if(line[i2]=='l'){ // Lamp GameMapAux_CreateEnt(ent_lamp,i,j); }else - if(line[i]=='B'){ + if(line[i2]=='B'){ // Barrel GameMapAux_CreateEnt(ent_barrel,i,j); }else - if(line[i]=='S'){ + if(line[i2]=='|'){ // Spiked hole GameMapAux_CreateEnt(ent_hole_spiked,i,j); }else - if(line[i]=='L'){ + if(line[i2]=='L'){ // Lava hole GameMapAux_CreateEnt(ent_hole_lava,i,j); }else - if(line[i]=='1'){ - // Save point 1 - GameMapAux_CreateEnt(ent_savepoint_1,i,j); + if(line[i2]=='S'){ + Entity *e; + // Save point + e=GameMapAux_CreateEnt(ent_savepoint,i,j); + e->A=line[i2+1]-'0'; }else - if(line[i]=='2'){ - // Save point 2 - GameMapAux_CreateEnt(ent_savepoint_2,i,j); - }else - if(line[i]=='3'){ - // Save point 3 - GameMapAux_CreateEnt(ent_savepoint_3,i,j); - }else - if(line[i]=='4'){ - // Save point 4 - GameMapAux_CreateEnt(ent_savepoint_4,i,j); - }else - if(line[i]=='5'){ - // Save point 5 - GameMapAux_CreateEnt(ent_savepoint_5,i,j); - }else - if(line[i]=='6'){ - // Save point 6 - GameMapAux_CreateEnt(ent_savepoint_6,i,j); - }else - if(line[i]=='7'){ - // Save point 7 - GameMapAux_CreateEnt(ent_savepoint_7,i,j); - }else - if(line[i]=='8'){ - // Save point 8 - GameMapAux_CreateEnt(ent_savepoint_8,i,j); - }else - if(line[i]=='9'){ - // Save point 9 - GameMapAux_CreateEnt(ent_savepoint_9,i,j); - }else - if(line[i]=='E'){ + if(line[i2]=='E'){ // Exit point GameMapAux_CreateEnt(ent_exitpoint,i,j); }else - if(line[i]=='F'){ + if(line[i2]=='F'){ // End point GameMapAux_CreateEnt(ent_endpoint,i,j); }else - if(line[i]=='>'){ + if(line[i2]=='>'){ // ArrowShooter right GameMapAux_CreateEnt(ent_arrowshooter_right,i,j); }else - if(line[i]=='<'){ + if(line[i2]=='<'){ // ArrowShooter left GameMapAux_CreateEnt(ent_arrowshooter_left,i,j); }else - if(line[i]=='V'){ + if(line[i2]=='V'){ // ArrowShooter down GameMapAux_CreateEnt(ent_arrowshooter_down,i,j); }else - if(line[i]=='A'){ + if(line[i2]=='A'){ // ArrowShooter up GameMapAux_CreateEnt(ent_arrowshooter_up,i,j); }else diff --git a/Input.c b/Input.c index d368f7b..15c4bb6 100644 --- a/Input.c +++ b/Input.c @@ -55,48 +55,6 @@ int Input_Init(){ // Notify a frame update to the input subsystem. void Input_Frame(){ Uint8* keys; - /*Uint8 buttons; - int mx,my; - vec2 mdir; - float temp; - int mup,mdown,mleft,mright; - extern int _width,_height; - - - // Get mouse state - buttons=SDL_GetMouseState(&mx,&my); - vec2_set(mdir,mx-(_width/2),my-(_height/2.0f)); - temp=1.0f/sqrtf(vec2_dot(mdir,mdir)); - vec2_scale(mdir,mdir,temp); - mup=mdown=mleft=mright=0; - - // Virtual Dpad on screen using mouse position - if(buttons){ - if(mdir[0]>0.5f){ - mright=1; - } - if(mdir[0]<-0.5f){ - mleft=1; - } - if(mdir[1]>0.5f){ - mdown=1; - } - if(mdir[1]<-0.5f){ - mup=1; - } - } - - // Process Keys - keys=SDL_GetKeyState(NULL); - Input_SetKey(InputKey_Action1,keys[SDLK_z]); - Input_SetKey(InputKey_Action2,keys[SDLK_x]); - Input_SetKey(InputKey_Up,keys[SDLK_UP]|mup); - Input_SetKey(InputKey_Down,keys[SDLK_DOWN]|mdown); - Input_SetKey(InputKey_Left,keys[SDLK_LEFT]|mleft); - Input_SetKey(InputKey_Right,keys[SDLK_RIGHT]|mright); - Input_SetKey(InputKey_Jump,keys[SDLK_SPACE]); - Input_SetKey(InputKey_Continue,keys[SDLK_RETURN]|keys[SDLK_KP_ENTER]); -*/ // Process Keys keys=SDL_GetKeyState(NULL); diff --git a/a.out b/a.out new file mode 100755 index 0000000..00b6501 Binary files /dev/null and b/a.out differ diff --git a/conv.c b/conv.c new file mode 100644 index 0000000..c232922 --- /dev/null +++ b/conv.c @@ -0,0 +1,88 @@ + +#include +#include + + +int Aux_Linea(FILE *f,char *line){ + int c; + int i=0; + memset(line,0,1024); + while(i<1024){ + c=fgetc(f); + if(c==EOF){ + line[i]=0; + return(0); + } + if(c=='\r'){ + continue; + } + if(c=='\n'){ + line[i]=0; + break; + } + line[i]=c; + i++; + } + return(1); +} + +int convert(char *file){ + FILE *f,*f2; + char file2[1024]; + char line[1024]; + int w,h; + int i,n; + int loop; + + f=fopen(file,"rb"); + if(!f){ + return(0); + } + sprintf(file2,"%s.txt",file); + f2=fopen(file2,"wb"); + if(!f2){ + fclose(f); + return(0); + } + + Aux_Linea(f,line); + sscanf(line,"%d %d",&w,&h); + fprintf(f2,"%d %d\n",w,h); + + loop=0; + do{ + loop=Aux_Linea(f,line); + n=strlen(line); + for(i=0;i..........# - #.........A...m m....A......# - #mmmmmlmmmmmmmm mmmmmml.lmmm# - m.m - m.m - m.m - m.m - #####3##### - #.........# - #......BB.# - #........<# - l.BB......l - #>........# - #......BB.# - #........<# - l.BB......l - #>........# - #.........# - #....E....# - #mmmmmmmmm# \ No newline at end of file + ############ll################ ######ll##########ll###### + ##..........................## ##................VV....## + ##..........................ll########......................## + ##..S1..............................S2......................## + ##..........................llmmmmmmmm>>....................## + ##..................AA......mm mm........AA............## + ##mmmmmmmmmmllmmmmmmmmmmmmmmmm mmmmmmmmmmmmll..llmmmmmm## + mm..mm + mm..mm + mm..mm + mm..mm + ##########S3########## + ##..................## + ##............BBBB..## + ##................<<## + ll..BBBB............ll + ##>>................## + ##............BBBB..## + ##................<<## + ll..BBBB............ll + ##>>................## + ##..................## + ##........EE........## + ##mmmmmmmmmmmmmmmmmm## diff --git a/data/level_05.txt b/data/level_05.txt index c591947..7340676 100644 --- a/data/level_05.txt +++ b/data/level_05.txt @@ -1,68 +1,69 @@ 100 100 - ######### - #...1...# - #.......# - #.......# - #.......# - #mml.lmm# - m.m - m.m - m.m - m.m - m.m - m.m -##l###2###l## -#...........# -#.B.B...B.B.# -#...........# -#LLLLrSrLLLL# -#...A...A...# -#mmmml.lmmmm# - m.m - m.m - m.m - m.m -######3###### -#..V.V.....L# -#LLLLLLLLL.L# -#L.........L# -#L.LLLLLLLLL# -#L.........L# -#LLLLLLLLL.L# -#L.........L# -#L.LLLLLLLLL# -#L.....A.A..# -#mmmml.lmmmm# - m.m - m.m - m.m - m.m - m.m -###V#V4###### -#LLLLL.LLLLL# -#LLLLL.....L# ->LLLLLLLLL.L# -mL.........L# -mL.LLLLLLLLL< -mL.........Lm ->LLLLLLLLL.Lm -mL.........Lm -mL.LLLLLLLLL< -mL.....LLLLLm -mLLLLL.LLLLLm -mmmmmm.AmAmmm - l.l - m.m - m.m - m.m - m.m - ####.#### - #.......# - #.......# - #.......# - #...E...# - #mmmmmmm# + ################## + ##......S1......## + ##..............## + ##..............## + ##..............## + ##mmmmll..llmmmm## + mm..mm + mm..mm + mm..mm + mm..mm + mm..mm + mm..mm +####ll######S2######ll#### +##......................## +##..BB..BB......BB..BB..## +##......................## +##LLLLLLLLrr||rrLLLLLLLL## +##......AA......AA......## +##mmmmmmmmll..llmmmmmmmm## + mm..mm + mm..mm + mm..mm + mm..mm +############S3############ +##....VV..VV..........LL## +##LLLLLLLLLLLLLLLLLL..LL## +##LL..................LL## +##LL..LLLLLLLLLLLLLLLLLL## +##LL..................LL## +##LLLLLLLLLLLLLLLLLL..LL## +##LL..................LL## +##LL..LLLLLLLLLLLLLLLLLL## +##LL..........AA..AA....## +##mmmmmmmmll..llmmmmmmmm## + mm..mm + mm..mm + mm..mm + mm..mm + mm..mm +######VV##VVS4############ +##LLLLLLLLLL..LLLLLLLLLL## +##LLLLLLLLLL..........LL## +>>LLLLLLLLLLLLLLLLLL..LL## +mmLL..................LL## +mmLL..LLLLLLLLLLLLLLLLLL<< +mmLL..................LLmm +>>LLLLLLLLLLLLLLLLLL..LLmm +mmLL..................LLmm +mmLL..LLLLLLLLLLLLLLLLLL<< +mmLL..........LLLLLLLLLLmm +mmLLLLLLLLLL..LLLLLLLLLLmm +mmmmmmmmmmmm..AAmmAAmmmmmm + ll..ll + mm..mm + mm..mm + mm..mm + mm..mm + ########..######## + ##..............## + ##..............## + ##..............## + ##......EE......## + ##mmmmmmmmmmmmmm## + diff --git a/data/level_06.txt b/data/level_06.txt index 207d146..902fd7c 100644 --- a/data/level_06.txt +++ b/data/level_06.txt @@ -1,20 +1,21 @@ 100 100 - ######### - #...1...# - #.......# - #.......# - #.......# - #mml.lmm# - m.m - m.m - m.m - m.m - ####.#### - #.......# - #.......# - #.......# - #...F...# - #mmmmmmm# +################## +##......S1......## +##..............## +##..............## +##..............## +##mmmmll..llmmmm## + mm..mm + mm..mm + mm..mm + mm..mm +########..######## +##..............## +##..............## +##..............## +##......FF......## +##mmmmmmmmmmmmmm## + diff --git a/game.save b/game.save index fb9edf5..e37298a 100644 Binary files a/game.save and b/game.save differ diff --git a/main.c b/main.c index d8ff1f1..26af555 100644 --- a/main.c +++ b/main.c @@ -2,6 +2,7 @@ #include #include +#include #include #include