- for(i = 0; i < NUM_BAD_GUYS; ++i)
- if (bad_guys[i].alive)
- if(xx == bad_guys[i].x/32 && yy == bad_guys[i].y/32)
- bad_guys[i].alive = NO;
-
-
- if (yy >= 0 && yy <= 15 && xx >= 0 && xx <= level_width)
- tiles[yy][xx] = c;
-}
-
-/* Save data for this level: */
-void savelevel(void)
-{
- FILE * fi;
- char * filename;
- int y;
- char str[80];
-
- /* Save data file: */
-
- filename = (char *) malloc(sizeof(char) * (strlen(DATA_PREFIX) + 20));
- sprintf(filename, "%s/levels/%s.dat", DATA_PREFIX, levelfilename);
- fi = fopen(filename, "w");
- if (fi == NULL)
- {
- perror(filename);
- st_shutdown();
- free(filename);
- exit(-1);
- }
- free(filename);
-
-
- /* sptrinf("# Level created by SuperTux built-in editor", fi); */
-
- fputs(levelname, fi);
- fputs("\n", fi);
- fputs(leveltheme, fi);
- fputs("\n", fi);
- sprintf(str, "%d\n", time_left); /* time */
- fputs(str, fi);
- fputs(song_title, fi); /* song filename */
- sprintf(str, "%d\n", bkgd_red); /* red background color */
- fputs(str, fi);
- sprintf(str, "%d\n", bkgd_green); /* green background color */
- fputs(str, fi);
- sprintf(str, "%d\n", bkgd_blue); /* blue background color */
- fputs(str, fi);
- sprintf(str, "%d\n", level_width); /* level width */
- fputs(str, fi);
-
- for(y = 0; y < 15; ++y)
- {
- fputs(tiles[y], fi);
- fputs("\n", fi);
- }
-
- fclose(fi);
-
- drawcenteredtext("SAVED!", 240, letters_gold, NO_UPDATE, 1);
- SDL_Flip(screen);
- SDL_Delay(1000);
-}
-
-
-/* I had to copy loadlevel, because loadlevel changes the tiles.
- For intance, badguys are removed from the tiles and we have to
- keep them there. */
-
-/* Load data for this level: */
-
-void le_loadlevel(void)
-{
- FILE * fi;
- char * filename;
- int x, y;
- char str[80];
- char* line = malloc(sizeof(char)*10);/*[LEVEL_WIDTH + 5];*/
-
- /* Load data file: */
-
- filename = (char *) malloc(sizeof(char) * (strlen(DATA_PREFIX) + 20));
- sprintf(filename, "%s/levels/%s.dat", DATA_PREFIX, levelfilename);
- fi = fopen(filename, "r");
- if (fi == NULL)
- {
- perror(filename);
- st_shutdown();
- free(filename);
- exit(-1);
- }
- free(filename);
-
- /* (Level title) */
- fgets(str, 20, fi);
- strcpy(levelname, str);
- levelname[strlen(levelname)-1] = '\0';
-
- /* (Level theme) */
- fgets(str, 20, fi);
- strcpy(leveltheme, str);
- leveltheme[strlen(leveltheme)-1] = '\0';
-
- fgets(line, 10, fi);
- time_left = atoi(line);
- fgets(str, 60, fi);
- song_title[0]='\0';
- strcpy(song_title,str);
- fgets(line, 10, fi);
- bkgd_red = atoi(line);
- fgets(line, 10, fi);
- bkgd_green= atoi(line);
- fgets(line, 10, fi);
- bkgd_blue = atoi(line);
- fgets(line, 10, fi);
- level_width = atoi(line);
-
- free(line);
- line = malloc(level_width*sizeof(char)+5);
-
- for (y = 0; y < 15; ++y)
- {
- fgets(line, level_width + 5, fi);
- line[strlen(line) - 1] = '\0';
- free(tiles[y]);
- tiles[y] = malloc((strlen(line)+5)*sizeof(char));
- strcpy(tiles[y], line);
- }
-
- fclose(fi);
-
- /* Activate bad guys: */
-
- /* as oposed to the gameloop.c func, this one doesn't remove
- the badguys from tiles */
-
- for (y = 0; y < 15; ++y)
- for (x = 0; x < level_width; ++x)
- if (tiles[y][x] >= '0' && tiles[y][x] <= '9')
- add_bad_guy(x * 32, y * 32, tiles[y][x] - '0');
-
-
- /* Set defaults: */
-
- if(time_left == 0)
- time_left = 255;
-
-
- /* Level Intro: */
-
- clearscreen(0, 0, 0);
-
- sprintf(str, "Editing Level %s", levelfilename);
- drawcenteredtext(str, 200, letters_red, NO_UPDATE, 1);
-
- sprintf(str, "%s", levelname);
- drawcenteredtext(str, 224, letters_gold, NO_UPDATE, 1);
-
- SDL_Flip(screen);
-
- SDL_Delay(1000);