-/* Save data for level: */
-
-void level_save(st_level* plevel,const char * subset, int level)
-{
- 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," (dynamic-tm ");
-
- for(y = 0; y < 15; ++y)
- {
- for(i = 0; i < plevel->width; ++i)
- fprintf(fi," %d ", plevel->dn_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,")");
- fprintf( fi,")\n");
-
- fclose(fi);
-}
-
-
-/* Unload data for this level: */
-
-void level_free(st_level* plevel)
-{
- int i;
- for(i=0; i < 15; ++i)
- free(plevel->bg_tiles[i]);
- for(i=0; i < 15; ++i)
- free(plevel->ia_tiles[i]);
- for(i=0; i < 15; ++i)
- free(plevel->dn_tiles[i]);
- for(i=0; i < 15; ++i)
- free(plevel->fg_tiles[i]);
-
- plevel->name.clear();
- plevel->theme.clear();
- plevel->song_title.clear();
- plevel->bkgd_image.clear();
-}
-
-/* Load graphics: */
-
-void level_load_gfx(st_level *plevel)
-{
- level_load_image(&img_brick[0],plevel->theme,"brick0.png", IGNORE_ALPHA);
- level_load_image(&img_brick[1],plevel->theme,"brick1.png", IGNORE_ALPHA);
-
- level_load_image(&img_solid[0],plevel->theme,"solid0.png", USE_ALPHA);
- level_load_image(&img_solid[1],plevel->theme,"solid1.png", USE_ALPHA);
- level_load_image(&img_solid[2],plevel->theme,"solid2.png", USE_ALPHA);
- level_load_image(&img_solid[3],plevel->theme,"solid3.png", USE_ALPHA);
-
- level_load_image(&img_bkgd_tile[0][0],plevel->theme,"bkgd-00.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[0][1],plevel->theme,"bkgd-01.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[0][2],plevel->theme,"bkgd-02.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[0][3],plevel->theme,"bkgd-03.png", USE_ALPHA);
-
- level_load_image(&img_bkgd_tile[1][0],plevel->theme,"bkgd-10.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[1][1],plevel->theme,"bkgd-11.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[1][2],plevel->theme,"bkgd-12.png", USE_ALPHA);
- level_load_image(&img_bkgd_tile[1][3],plevel->theme,"bkgd-13.png", USE_ALPHA);
-
- if(!plevel->bkgd_image.empty())
- {
- char fname[1024];
- snprintf(fname, 1024, "%s/background/%s", st_dir, plevel->bkgd_image.c_str());
- if(!faccessible(fname))
- snprintf(fname, 1024, "%s/images/background/%s", datadir.c_str(), plevel->bkgd_image.c_str());
- texture_load(&img_bkgd, fname, IGNORE_ALPHA);
- }
- else
- {
- /* Quick hack to make sure an image is loaded, when we are freeing it afterwards. */#
- level_load_image(&img_bkgd, plevel->theme,"solid0.png", IGNORE_ALPHA);
- }
-}
-
-/* Free graphics data for this level: */
-
-void level_free_gfx(void)
-{
- int i;
-
- for (i = 0; i < 2; i++)
- {
- texture_free(&img_brick[i]);
- }
- for (i = 0; i < 4; i++)
- {
- texture_free(&img_solid[i]);
- texture_free(&img_bkgd_tile[0][i]);
- texture_free(&img_bkgd_tile[1][i]);
- }
-
- texture_free(&img_bkgd);
-}
-
-/* Load a level-specific graphic... */
-
-void level_load_image(texture_type* ptexture, string theme,const char * file, int use_alpha)
-{
- char fname[1024];
-
- snprintf(fname, 1024, "%s/themes/%s/%s", st_dir, theme.c_str(), file);
- if(!faccessible(fname))
- snprintf(fname, 1024, "%s/images/themes/%s/%s", datadir.c_str(), theme.c_str(), file);
-
- texture_load(ptexture, fname, use_alpha);
-}
-
-void tilemap_change_size(unsigned int** tilemap[15], int w, int old_w)