X-Git-Url: http://royale.zerezo.com/git/?p=zeRace;a=blobdiff_plain;f=tracklist.c;fp=tracklist.c;h=fdab66db4215060bdbba220a9a64633b95f22e95;hp=0000000000000000000000000000000000000000;hb=dde2df6289f6daf23ee1632560c4c89061ef2f4a;hpb=866e35b81c26169886388f7c93dce52f2a42809f diff --git a/tracklist.c b/tracklist.c new file mode 100644 index 0000000..fdab66d --- /dev/null +++ b/tracklist.c @@ -0,0 +1,62 @@ +#include "tracklist.h" + +#define MAXTRACKLENGTH 80 + +/* get available local tracks */ +int zeRace_get_tracks(struct _tracklist **tracklist) +{ + FILE *fic; + char line[MAXTRACKLENGTH]; + struct _tracklist *tmp=NULL,*first=NULL; + + *tracklist=NULL; + if ((fic=fopen("tracks/list.txt","rt"))==NULL) + { + fprintf(stderr,"can't open track list\n"); + return 0; + } + while (!feof(fic)) + { + tmp=(struct _tracklist *)malloc(sizeof(struct _tracklist)); + if (first==NULL) first=tmp; + fgets(line,MAXTRACKLENGTH,fic); + tmp->name=(char *)malloc(strlen(line)+1); + strcpy(tmp->name,line); + tmp->name[strlen(tmp->name)-1]='\0'; + fgets(line,MAXTRACKLENGTH,fic); + tmp->title=(char *)malloc(strlen(line)+1); + strcpy(tmp->title,line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->author=(char *)malloc(strlen(line)+1); + strcpy(tmp->author,line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->version=(char *)malloc(strlen(line)+1); + strcpy(tmp->version,line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->x=atoi(line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->y=atoi(line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->a=atoi(line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->best_time=atoi(line); + fgets(line,MAXTRACKLENGTH,fic); + tmp->best_pseudo=(char *)malloc(strlen(line)+1); + strcpy(tmp->best_pseudo,line); + tmp->full=(char *)malloc(strlen(line)+20); + sprintf(tmp->full,"tracks/%s.png",tmp->name); + tmp->function=(char *)malloc(strlen(line)+30); + sprintf(tmp->function,"tracks/%s_function.png",tmp->name); + tmp->prev=*tracklist; + if (tmp->prev) tmp->prev->next=tmp; + *tracklist=tmp; + /* skip one line */ + fgets(line,MAXTRACKLENGTH,fic); + } + fclose(fic); + if (!tmp) { fprintf(stderr,"no circuits found !\n"); return 0; } + while (tmp->prev) tmp=tmp->prev; + tmp->prev=*tracklist; + (*tracklist)->next=tmp; + return 1; +}