-
- /* Write header: */
- fprintf(fi,";SuperTux-Level-Subset\n");
- fprintf(fi,"(supertux-level-subset\n");
-
- /* Save title info: */
- fprintf(fi," (title \"%s\")\n", title.c_str());
-
- /* Save the description: */
- fprintf(fi," (description \"%s\")\n", description.c_str());
-
- fprintf( fi,")");
- fclose(fi);
- }
-}
-
-std::string
-LevelSubset::get_level_filename(unsigned int num)
-{
- char filename[1024];
-
- // Load data file:
- snprintf(filename, 1024, "%s/levels/%s/level%d.stl", st_dir,
- name.c_str(), num);
- if(!faccessible(filename))
- snprintf(filename, 1024, "%s/levels/%s/level%d.stl", datadir.c_str(),
- name.c_str(), num);
-
- return std::string(filename);
-}
-
-//---------------------------------------------------------------------------
-
-Level::Level()
- : name("noname"), author("mr. x"), time_left(500)
-{
-}
-
-void
-Level::load(const std::string& filename)
-{
- LispReader* level = LispReader::load(filename, "supertux-level");
-
- int version = 1;
- level->read_int("version", version);
- if(version == 1) {
- load_old_format(*level);
- delete level;
- return;
- }
-
- for(lisp_object_t* cur = level->get_lisp(); !lisp_nil_p(cur);
- cur = lisp_cdr(cur)) {
- std::string token = lisp_symbol(lisp_car(lisp_car(cur)));
- lisp_object_t* data = lisp_car(lisp_cdr(lisp_car(cur)));
- LispReader reader(lisp_cdr(lisp_car(cur)));
-
- if(token == "name") {
- name = lisp_string(data);
- } else if(token == "author") {
- author = lisp_string(data);
- } else if(token == "time") {
- time_left = lisp_integer(data);
- } else if(token == "sector") {
- Sector* sector = new Sector;
- sector->parse(reader);
- add_sector(sector);
- } else {
- std::cerr << "Unknown token '" << token << "' in level file.\n";
- continue;