--- AE/Installer/trunk/source/installer.cpp 2010/05/24 19:13:59 543 +++ AE/Installer/trunk/source/installer.cpp 2010/05/26 23:04:56 549 @@ -647,6 +647,13 @@ void recompileAll(vector install vector skippedfolders; ofstream BSLlog("BSL.log"); + if(exists("../GameDataFolder/BSLBackup/")) { + remove_all("../GameDataFolder/BSLBackup/"); + } + else { + create_directory("../GameDataFolder/BSLBackup/"); + } + copy("../GameDataFolder/IGMD/", "../GameDataFolder/BSLBackup/"); for ( directory_iterator dir_itr( "../GameDataFolder/IGMD/" ), end_itr; dir_itr != end_itr; ++dir_itr ) { @@ -659,7 +666,7 @@ void recompileAll(vector install 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 - if(!(globalPackages[j].hasAddon || globalPackages[j].hasBSL)) break; //skip non-BSL + if(globalPackages[j].hasBSL) break; //skip non-BSL if( exists( "packages/" + globalPackages[j].modStringName + "/BSL/" ) ) { copyBSL("packages/" + globalPackages[j].modStringName + "/BSL", BSLfolders, globalPackages[j] ); BSLlog << "Copied " << globalPackages[j].modStringName << "!\n"; @@ -668,12 +675,26 @@ void recompileAll(vector install } } + + ModPackage emptyPackage; emptyPackage.modStringName = "VanillaBSL"; emptyPackage.hasBSL = 1; copyBSL("packages/VanillaBSL/IGMD", BSLfolders, emptyPackage); BSLlog.close(); - + + 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 + if(!globalPackages[j].hasAddon) break; //skip non-BSL + if( exists( "packages/" + globalPackages[j].modStringName + "/BSL/" ) ) { + copyBSL("packages/" + globalPackages[j].modStringName + "/BSL", BSLfolders, globalPackages[j] ); + BSLlog << "Copied " << globalPackages[j].modStringName << "!\n"; + } + } + } + } + logfile << "Writing config file"; writeInstalledMods(installedMods); setProgressBar(1000); @@ -714,13 +735,14 @@ void copyBSL(string copypath, vectorpath() ) && dir_itr->path().string() != ".svn" ) { BSLlog << "Testing " << dir_itr->path().string() << " HasBSL: " << pkg.hasBSL << " HasAddon: " << pkg.hasAddon << "\n"; int skip_folder = 0; - - for(unsigned int k = 0; k < BSLfolders.size(); k++) {//iterate through already found BSL folders - BSLlog << "testing " << dir_itr->path().filename() << " vs " << BSLfolders[k] << "\n"; - if(dir_itr->path().filename() == BSLfolders[k]) { - skip_folder = 1; - BSLlog << "skipping " << BSLfolders[k] << " in " << pkg.modStringName << "\n"; - break; + if(!pkg.hasAddon) { + for(unsigned int k = 0; k < BSLfolders.size(); k++) {//iterate through already found BSL folders + BSLlog << "testing " << dir_itr->path().filename() << " vs " << BSLfolders[k] << "\n"; + if(dir_itr->path().filename() == BSLfolders[k]) { + skip_folder = 1; + BSLlog << "skipping " << BSLfolders[k] << " in " << pkg.modStringName << "\n"; + break; + } } } if (!skip_folder && !exists("../GameDataFolder/IGMD/" + dir_itr->path().filename() + "/ignore.txt")) {