- FILE * fi;
- char filename[1024];
- int y,i;
- char str[80];
-
- /* Save data file: */
- sprintf(str, "/levels/%s/", subset);
- fcreatedir(str);
- snprintf(filename, 1024, "%s/levels/%s/level%d.stl", st_dir, subset, level);
- if(!fwriteable(filename))
- snprintf(filename, 1024, "%s/levels/%s/level%d.stl", datadir.c_str(), subset, level);
-
- fi = fopen(filename, "w");
- if (fi == NULL)
- {
- perror(filename);
- st_shutdown();
- exit(-1);
- }
-
-
- /* Write header: */
- fprintf(fi,";SuperTux-Level\n");
- fprintf(fi,"(supertux-level\n");
-
- fprintf(fi," (version %d)\n", 1);
- fprintf(fi," (name \"%s\")\n", plevel->name.c_str());
- fprintf(fi," (theme \"%s\")\n", plevel->theme.c_str());
- fprintf(fi," (music \"%s\")\n", plevel->song_title.c_str());
- fprintf(fi," (background \"%s\")\n", plevel->bkgd_image.c_str());
- fprintf(fi," (particle_system \"%s\")\n", plevel->particle_system.c_str());
- fprintf(fi," (bkgd_red %d)\n", plevel->bkgd_red);
- fprintf(fi," (bkgd_green %d)\n", plevel->bkgd_green);
- fprintf(fi," (bkgd_blue %d)\n", plevel->bkgd_blue);
- fprintf(fi," (time %d)\n", plevel->time_left);
- fprintf(fi," (width %d)\n", plevel->width);
- fprintf(fi," (gravity %2.1f)\n", plevel->gravity);
- fprintf(fi," (background-tm ");
-
- for(y = 0; y < 15; ++y)
- {
- for(i = 0; i < plevel->width; ++i)
- fprintf(fi," %d ", plevel->bg_tiles[y][i]);
- }
-
- fprintf( fi,")\n");
- fprintf(fi," (interactive-tm ");
-
- for(y = 0; y < 15; ++y)
- {
- for(i = 0; i < plevel->width; ++i)
- fprintf(fi," %d ", plevel->ia_tiles[y][i]);
- }
-
- fprintf( fi,")\n");
- fprintf(fi," (foreground-tm ");
-
- for(y = 0; y < 15; ++y)
- {
- for(i = 0; i < plevel->width; ++i)
- fprintf(fi," %d ", plevel->fg_tiles[y][i]);
- }
-
- fprintf( fi,")\n");
- fprintf( fi,"(objects\n");
-
- for(std::vector<BadGuyData>::iterator it = plevel->
- badguy_data.begin();
- it != plevel->badguy_data.end();
- ++it)
- fprintf( fi,"(%s (x %d) (y %d))\n",badguykind_to_string((*it).kind).c_str(),(*it).x,(*it).y);
-
- fprintf( fi,")\n");
-
- fprintf( fi,")\n");
-
- fclose(fi);