version 0.3
[zeRace] / tracklist.c
diff --git a/tracklist.c b/tracklist.c
new file mode 100644 (file)
index 0000000..fdab66d
--- /dev/null
@@ -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;
+}