From: Ricardo Cruz Date: Wed, 21 Apr 2004 11:17:31 +0000 (+0000) Subject: Now, the worldmap displays the Level's name, instead of the path. X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=bab1c1f161d0e48479ee81b3a5460271f983598c;p=supertux.git Now, the worldmap displays the Level's name, instead of the path. SVN-Revision: 605 --- diff --git a/src/worldmap.cpp b/src/worldmap.cpp index f78b3a20f..7e3f00c52 100644 --- a/src/worldmap.cpp +++ b/src/worldmap.cpp @@ -281,7 +281,7 @@ WorldMap::WorldMap() input_direction = NONE; enter_level = false; - name = ""; + name = ""; music = "SALCON.MOD"; song = 0; @@ -345,6 +345,9 @@ WorldMap::load_map() reader.read_string("name", &level.name); reader.read_int("x", &level.x); reader.read_int("y", &level.y); + + get_level_title(&level); // get level's title + levels.push_back(level); } @@ -361,6 +364,38 @@ WorldMap::load_map() } } +void WorldMap::get_level_title(Levels::pointer level) +{ +/** get level's title */ +level->title = ""; + +FILE * fi; +lisp_object_t* root_obj = 0; +fi = fopen((datadir + "levels/" + level->name).c_str(), "r"); +if (fi == NULL) + { + perror((datadir + "levels/" + level->name).c_str()); + return; + } + +lisp_stream_t stream; +lisp_stream_init_file (&stream, fi); +root_obj = lisp_read (&stream); + +if (root_obj->type == LISP_TYPE_EOF || root_obj->type == LISP_TYPE_PARSE_ERROR) + { + printf("World: Parse Error in file %s", level->name.c_str()); + } + +if (strcmp(lisp_symbol(lisp_car(root_obj)), "supertux-level") == 0) + { + LispReader reader(lisp_cdr(root_obj)); + reader.read_string("name", &level->title); + } + +fclose(fi); +} + void WorldMap::on_escape_press() { @@ -676,7 +711,7 @@ WorldMap::draw_status() if (i->x == tux->get_tile_pos().x && i->y == tux->get_tile_pos().y) { - white_text->draw_align(i->name.c_str(), screen->w/2, screen->h, A_HMIDDLE, A_BOTTOM); + white_text->draw_align(i->title.c_str(), screen->w/2, screen->h, A_HMIDDLE, A_BOTTOM); break; } } diff --git a/src/worldmap.h b/src/worldmap.h index 46d37d158..eab9e7e88 100644 --- a/src/worldmap.h +++ b/src/worldmap.h @@ -139,6 +139,7 @@ public: int x; int y; std::string name; + std::string title; bool solved; // Directions which are walkable from this level @@ -160,6 +161,8 @@ private: Point offset; std::string savegame_file; + void get_level_title(Levels::pointer level); + void draw_status(); public: WorldMap();