X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel_subset.cpp;h=5cd4d2abd4f7836fb2b8658c8b03303653c15b99;hb=d5f3984577afe481c7e0596d3a01f86c8ae83945;hp=39bc622294839ed191c333f9816278d58e326d74;hpb=09f643fc22ff3c74ea24a60dedfd2a6e2d17b413;p=supertux.git diff --git a/src/level_subset.cpp b/src/level_subset.cpp index 39bc62229..5cd4d2abd 100644 --- a/src/level_subset.cpp +++ b/src/level_subset.cpp @@ -20,7 +20,6 @@ #include #include - #include "app/setup.h" #include "level.h" #include "app/globals.h" @@ -77,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; @@ -103,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); @@ -171,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]; }