X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Flevel_subset.cpp;h=0a67f1dafadf37f7ad4024518b0ea529756dd3f1;hb=ee6972038331a3c26a2a6a0bdb2baca25475b1d2;hp=34d0565b447abe07bfc4605d409ca1f97a2d2f4b;hpb=29453e7cce40aa40726c3c31b0ce893fe18d6e1a;p=supertux.git diff --git a/src/level_subset.cpp b/src/level_subset.cpp index 34d0565b4..0a67f1daf 100644 --- a/src/level_subset.cpp +++ b/src/level_subset.cpp @@ -18,6 +18,8 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. +#include + #include #include #include "app/setup.h" @@ -88,42 +90,32 @@ void LevelSubset::load(const std::string& subset) // Check in which directory our subset is located (ie. ~/.supertux/ // or SUPERTUX_DATADIR) std::string filename; - filename = st_dir + "/levels/" + subset + "/"; - if (access(filename.c_str(), R_OK) == 0) - { - directory = filename; - } - else + filename = st_dir + "/levels/" + subset + "/info"; + if (access(filename.c_str(), R_OK) != 0) { - filename = datadir + "/levels/" + subset + "/"; - if (access(filename.c_str(), R_OK) == 0) - directory = filename; - else + filename = datadir + "/levels/" + subset + "/info"; + if (access(filename.c_str(), R_OK) != 0) std::cout << "Error: LevelSubset: couldn't find subset: " << subset << std::endl; } - read_info_file(directory + "info"); + read_info_file(filename); if (levels.empty()) { // Level info file doesn't define any levels, so read the // directory to see what we can find std::set files; + filename = datadir + "/levels/" + subset + "/"; + files = FileSystem::read_directory(filename); + filename = st_dir + "/levels/" + subset + "/"; - if(access(filename.c_str(), R_OK) == 0) - { - files = FileSystem::read_directory(filename); - } - else - { - filename = datadir + "/levels/" + subset + "/"; - files = FileSystem::read_directory(filename); - } + std::set user_files = FileSystem::read_directory(filename); + files.insert(user_files.begin(), user_files.end()); for(std::set::iterator i = files.begin(); i != files.end(); ++i) { if (has_suffix(*i, ".stl")) - levels.push_back(*i); + levels.push_back(subset+ "/" + *i); } } } @@ -160,7 +152,7 @@ LevelSubset::save() fprintf(fi," (description \"%s\")\n", description.c_str()); /* Save the hide from Contrbis menu boolean: */ - fprintf(fi," (hide-from-contribs \"%s\")\n", hide_from_contribs ? "#t" : "#f"); + fprintf(fi," (hide-from-contribs %s)\n", hide_from_contribs ? "#t" : "#f"); fprintf( fi,")"); fclose(fi); @@ -177,7 +169,7 @@ std::string LevelSubset::get_level_filename(unsigned int num) { assert(num < levels.size()); - return directory + levels[num]; + return levels[num]; } int