X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel_subset.cpp;h=5cd4d2abd4f7836fb2b8658c8b03303653c15b99;hb=42503cac8eac1199cccec2d4fbed7fde41a2bb55;hp=ba5d803e1a89081169753372a2de63948844a2a3;hpb=c5cbd36c2e01d8c807c8c931ca44fb7c1b48ad18;p=supertux.git diff --git a/src/level_subset.cpp b/src/level_subset.cpp index ba5d803e1..5cd4d2abd 100644 --- a/src/level_subset.cpp +++ b/src/level_subset.cpp @@ -19,6 +19,7 @@ // 02111-1307, USA. #include +#include #include "app/setup.h" #include "level.h" #include "app/globals.h" @@ -75,22 +76,22 @@ void LevelSubset::read_info_file(const std::string& info_file) lisp_free(root_obj); } -void LevelSubset::load(const char* subset) +void LevelSubset::load(const std::string& subset) { name = subset; // Check in which directory our subset is located (ie. ~/.supertux/ // or SUPERTUX_DATADIR) - char filename[1024]; - snprintf(filename, 1024, "%s/levels/%s/", st_dir, subset); - if (access(filename, R_OK) == 0) + std::string filename; + filename = st_dir + "/levels/" + subset + "/"; + if (access(filename.c_str(), R_OK) == 0) { directory = filename; } else { - snprintf(filename, 1024, "%s/levels/%s/", datadir.c_str(), subset); - if (access(filename, R_OK) == 0) + filename = datadir + "/levels/" + subset + "/"; + if (access(filename.c_str(), R_OK) == 0) directory = filename; else std::cout << "Error: LevelSubset: couldn't find subset: " << subset << std::endl; @@ -101,20 +102,20 @@ void LevelSubset::load(const char* subset) if (levels.empty()) { // Level info file doesn't define any levels, so read the // directory to see what we can find - std::vector files; + std::set files; - snprintf(filename, 1024, "%s/levels/%s/", st_dir, subset); - if(access(filename, R_OK) == 0) + filename = st_dir + "/levels/" + subset + "/"; + if(access(filename.c_str(), R_OK) == 0) { files = FileSystem::read_directory(filename); } else { - snprintf(filename, 1024, "%s/levels/%s/", datadir.c_str(), subset); + filename = datadir + "/levels/" + subset + "/"; files = FileSystem::read_directory(filename); } - for(std::vector::iterator i = files.begin(); i != files.end(); ++i) + for(std::set::iterator i = files.begin(); i != files.end(); ++i) { if (has_suffix(*i, ".stl")) levels.push_back(*i); @@ -169,6 +170,7 @@ LevelSubset::get_level_filename(unsigned int num) { assert(num < levels.size()); +std::cerr << "levels[" << num << "]: " << levels[num] << std::endl; return directory + levels[num]; }