--- AE/Installer/trunk/source/installer.cpp 2010/05/26 23:28:22 550 +++ AE/Installer/trunk/source/installer.cpp 2010/05/27 20:30:35 551 @@ -597,37 +597,53 @@ void recompileAll(vector install else if(splitInstances == false){ directory_iterator end_iter; - for ( directory_iterator dir_itr( vanilla_dir ); - dir_itr != end_iter; - ++dir_itr ) - { - if ( is_directory( dir_itr->status() ) ) - { - numberOfDats++; + + char levelnums[256] = {0}; + + + + for(int k = 0; k < 256; k++) { + if( exists( (path)("./VanillaDats/level" + lexical_cast(k) + "_final/") ) ) { + levelnums[k] = 1; + } } - + + for (int i = installedMods.size() - 1; i >= 0; i--) { //Iterates through the installed mods (backwards :P) + for (unsigned int j = 0; j < globalPackages.size(); ++j) { //looking in the global packages + if (globalPackages[j].modStringName == installedMods[i]) { //for a mod that has BSL in it + for(int k = 0; k < 256; k++) { + if( globalPackages[j].hasOnis && + exists( (path)("packages/" + globalPackages[j].modStringName + "/oni/level" + lexical_cast(k) + "_final/") ) ) { + levelnums[k] = 1; + + } + } + } + } + } + for (int levelnum = 0; levelnum < 256; levelnum++) + if (levelnums[levelnum]) + numberOfDats++; + out << numberOfDats; datString = out.str(); - - for ( directory_iterator dir_itr( vanilla_dir ); - dir_itr != end_iter; - ++dir_itr ) - { + + for(int levelnum = 0; levelnum < 256; levelnum++) { try { - if ( is_directory( dir_itr->status() ) ) + if ( levelnums[levelnum] ) { - importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " "; + importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + "level" + lexical_cast(levelnum) + "_Final "; for (unsigned int i = 0; i < installedMods.size(); ++i) { - if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename() )) - importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename(); + if (exists((path)("packages/" + installedMods[i] + "/oni/level" + lexical_cast(levelnum) + "_final") )) + importCommand += " packages/" + installedMods[i] + "/oni/level" + lexical_cast(levelnum) + "_Final"; } - importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log"; + importCommand += " ../GameDataFolder/level" + lexical_cast(levelnum) + "_Final.dat >> Install.log"; setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats setStatusArea("Step " + lexical_cast(j) + '/' + lexical_cast(numberOfDats)+ ": Importing " + - dir_itr->path().filename() + " "); + "level" + lexical_cast(levelnum) + "_Final"+ " "); system(importCommand.c_str()); j++; }