Thread: [Super-tux-commit] supertux/src setup.cpp,1.79.2.1,1.79.2.2 title.cpp,1.81,1.81.2.1 worldmap.cpp,1.6
Brought to you by:
wkendrick
From: Ricardo C. <rm...@us...> - 2004-07-18 11:58:24
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10705/src Modified Files: Tag: supertux_0_1_1_branch setup.cpp title.cpp worldmap.cpp worldmap.h Log Message: Added support for worlds in Contribs menus. Index: title.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/title.cpp,v retrieving revision 1.81 retrieving revision 1.81.2.1 diff -u -d -r1.81 -r1.81.2.1 --- title.cpp 10 May 2004 20:37:59 -0000 1.81 +++ title.cpp 18 Jul 2004 11:58:15 -0000 1.81.2.1 @@ -50,6 +50,7 @@ #include "math.h" #include "tile.h" #include "resources.h" +#include "worldmap.h" static Surface* bkg_title; static Surface* logo; @@ -62,8 +63,10 @@ static unsigned int last_update_time; static unsigned int update_time; -std::vector<LevelSubset*> contrib_subsets; -std::string current_contrib_subset; +static std::vector<LevelSubset*> contrib_subsets; +static std::string current_contrib_subset; + +static string_list_type worldmap_list; void free_contrib_menu() { @@ -81,7 +84,7 @@ free_contrib_menu(); - contrib_menu->additem(MN_LABEL,"Contrib Levels",0,0); + contrib_menu->additem(MN_LABEL,"Bonus Levels",0,0); contrib_menu->additem(MN_HL,"",0,0); for (int i = 0; i < level_subsets.num_items; ++i) @@ -89,10 +92,17 @@ LevelSubset* subset = new LevelSubset(); subset->load(level_subsets.item[i]); contrib_menu->additem(MN_GOTO, subset->title.c_str(), i, - contrib_subset_menu, i+1); + contrib_subset_menu, i); contrib_subsets.push_back(subset); } + for(int i = 0; i < worldmap_list.num_items; i++) + { + WorldMapNS::WorldMap worldmap; + worldmap.loadmap(worldmap_list.item[i]); + contrib_menu->additem(MN_ACTION, worldmap.get_world_title(),0,0, i + level_subsets.num_items); + } + contrib_menu->additem(MN_HL,"",0,0); contrib_menu->additem(MN_BACK,"Back",0,0); @@ -101,43 +111,41 @@ void check_contrib_menu() { - static int current_subset = -1; - int index = contrib_menu->check(); - if (index != -1) + if (index == -1) + return; + + if (index < (int)contrib_subsets.size()) { - index -= 1; - if (index >= 0 && index <= int(contrib_subsets.size())) - { - if (current_subset != index) - { - current_subset = index; - // FIXME: This shouln't be busy looping - LevelSubset& subset = * (contrib_subsets[index]); - - current_contrib_subset = subset.name; + // FIXME: This shouln't be busy looping + LevelSubset& subset = * (contrib_subsets[index]); - std::cout << "Updating the contrib subset menu..." << subset.levels << std::endl; - - contrib_subset_menu->clear(); + current_contrib_subset = subset.name; + + contrib_subset_menu->clear(); + + contrib_subset_menu->additem(MN_LABEL, subset.title, 0,0); + contrib_subset_menu->additem(MN_HL,"",0,0); - contrib_subset_menu->additem(MN_LABEL, subset.title, 0,0); - contrib_subset_menu->additem(MN_HL,"",0,0); - for (int i = 1; i <= subset.levels; ++i) - { - Level level; - level.load(subset.name, i); - contrib_subset_menu->additem(MN_ACTION, level.name, 0, 0, i); - } - contrib_subset_menu->additem(MN_HL,"",0,0); - contrib_subset_menu->additem(MN_BACK, "Back", 0, 0); - } - } - else + for (int i = 0; i < subset.levels; ++i) { - // Back button + /** get level's title */ + Level level; + level.load(subset.name, i); + contrib_subset_menu->additem(MN_ACTION, level.name, 0,0,i); } - } + + contrib_subset_menu->additem(MN_HL,"",0,0); + contrib_subset_menu->additem(MN_BACK, "Back", 0, 0); + } + else if(index < worldmap_list.num_items + (int)contrib_subsets.size()) + { + WorldMapNS::WorldMap worldmap; + worldmap.loadmap(worldmap_list.item[index - contrib_subsets.size()]); + worldmap.display(); + + Menu::set_current(main_menu); + } } void check_contrib_subset_menu() @@ -230,6 +238,12 @@ logo = new Surface(datadir + "/images/title/logo.png", USE_ALPHA); img_choose_subset = new Surface(datadir + "/images/status/choose-level-subset.png", USE_ALPHA); + /* Generating contrib maps by only using a string_list */ + // Since there isn't any world dir or anything, add a hardcoded entry for Bonus Island + string_list_init(&worldmap_list); + string_list_add_item(&worldmap_list, "bonusisland.stwm"); +// worldmap_list = dfiles("levels/default", NULL, "icyisland.stwm"); + /* --- Main title loop: --- */ frame = 0; @@ -369,6 +383,7 @@ /* Free surfaces: */ free_contrib_menu(); + string_list_free(&worldmap_list); delete bkg_title; delete logo; delete img_choose_subset; Index: worldmap.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/worldmap.cpp,v retrieving revision 1.68.2.3 retrieving revision 1.68.2.4 diff -u -d -r1.68.2.3 -r1.68.2.4 --- worldmap.cpp 10 Jul 2004 21:53:08 -0000 1.68.2.3 +++ worldmap.cpp 18 Jul 2004 11:58:15 -0000 1.68.2.4 @@ -384,7 +384,6 @@ void WorldMap::load_map() { - lisp_object_t* root_obj = lisp_read_from_file(map_file); if (!root_obj) st_abort("Couldn't load file", map_file); @@ -1028,6 +1027,14 @@ lisp_free(savegame); } +void +WorldMap::loadmap(const std::string& filename) +{ + savegame_file = ""; + set_map_file(filename); + load_map(); +} + } // namespace WorldMapNS /* Local Variables: */ Index: worldmap.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/worldmap.h,v retrieving revision 1.28.2.2 retrieving revision 1.28.2.3 diff -u -d -r1.28.2.2 -r1.28.2.3 --- worldmap.h 10 Jul 2004 21:53:08 -0000 1.28.2.2 +++ worldmap.h 18 Jul 2004 11:58:15 -0000 1.28.2.3 @@ -212,6 +212,10 @@ void savegame(const std::string& filename); void loadgame(const std::string& filename); + void loadmap(const std::string& filename); + + const std::string& get_world_title() const + { return name; } const int& get_start_x() const { return start_x; } Index: setup.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/setup.cpp,v retrieving revision 1.79.2.1 retrieving revision 1.79.2.2 diff -u -d -r1.79.2.1 -r1.79.2.2 --- setup.cpp 10 Jul 2004 21:53:08 -0000 1.79.2.1 +++ setup.cpp 18 Jul 2004 11:58:15 -0000 1.79.2.2 @@ -385,7 +385,7 @@ main_menu->set_pos(screen->w/2, 335); main_menu->additem(MN_GOTO, "Start Game",0,load_game_menu, MNID_STARTGAME); - main_menu->additem(MN_GOTO, "Contrib Levels",0,contrib_menu, MNID_CONTRIB); + main_menu->additem(MN_GOTO, "Bonus Levels",0,contrib_menu, MNID_CONTRIB); main_menu->additem(MN_GOTO, "Options",0,options_menu, MNID_OPTIONMENU); main_menu->additem(MN_ACTION,"Level Editor",0,0, MNID_LEVELEDITOR); main_menu->additem(MN_ACTION,"Credits",0,0, MNID_CREDITS); @@ -509,7 +509,7 @@ WorldMapNS::WorldMap worldmap; //TODO: Define the circumstances under which BonusIsland is chosen - worldmap.set_map_file("bonusisland.stwm"); + worldmap.set_map_file("worldmap.stwm"); worldmap.load_map(); // Load the game or at least set the savegame_file variable |