// Copyright (C) 2012 Valeriano Alfonso Rodriguez (Kableado) #include #include #include #include #include "GameLib.h" #include "GameEnts.h" #include "GameMap.h" int ReadLine(FILE *f,char *line,int max){ int c; int i=0; while(i<(max-1)){ c=fgetc(f); if(c==EOF){ line[i]=0; return(-1); } if(c=='\r'){ continue; } if(c=='\n'){ line[i]=0; return(i); } line[i]=c; i++; } line[i]=0; return(i); } Entity GameMapAux_CreateEnt(Entity ent,int i,int j,int res){ Entity e; vec2 pos; e=Entity_Copy(ent); vec2_set(pos,(res/2)+i*res,(res/2)+j*res); vec2_plus(e->pos,e->pos,pos); Entity_CalcBBox(e); GameLib_AddEntity(e); return(e); } #define MaxLineLen 1024 int GameMap_LoadLevel(char *filename,int res){ FILE *file; char line[MaxLineLen]; int len,i,j; int width,height; char *map; // Open the file file=fopen(filename,"rb"); if(!file){ return(0); } // Read the file to determine sizes width=0; height=0; do{ len=ReadLine(file,line,MaxLineLen); if(len>-1){ if(len>height){ height=len; } width++; } }while(len>-1); fseek(file,0,SEEK_SET); // Build the map map=malloc(sizeof(char)*width*height); memset(map,0,width*height); #define MAP(x,y) map[(x)+((y)*width)] j=0; do{ len=ReadLine(file,line,MaxLineLen); for(i=0;i-1); // Close the file fclose(file); // Parse the map for(j=0;j