| 33 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 34 |  | #include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 35 |  | #include "boost/lexical_cast.hpp" //int -> string | 
 
 
 
 
 
 
 
 | 36 | + | #include "boost/algorithm/string.hpp" | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 37 |  | #include "installer.h" | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 38 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 39 |  | #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 |  | using namespace std; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 66 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 |  |  | 
 
 
 
 
 
 
 
 | 68 | + | vector<string> globalInstalledMods; | 
 
 
 
 
 
 
 
 | 69 | + | vector<ModPackage> globalPackages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 70 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 |  | #include "boost/date_time/gregorian/gregorian.hpp" | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 77 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 78 |  | string output; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 79 |  | string escape_me = "& ;()|<>\"'\\#*?$"; | 
 
 
 
 
 
 
 
 
 
 
 | 80 | < | for(int i = 0; i < input.size(); i++)  { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 81 | < | for(int j = 0; j < escape_me.size(); j++) if (input[i] == escape_me[j]) output += '\\'; | 
 
 
 
 
 
 
 
 
 | 80 | > | for(unsigned int i = 0; i < input.size(); i++)  { | 
 
 
 
 
 | 81 | > | for(unsigned int j = 0; j < escape_me.size(); j++) if (input[i] == escape_me[j]) output += '\\'; | 
 
 
 
 
 
 
 
 
 
 
 | 82 |  | output += input[i]; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 83 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 84 |  | return output; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 334 |  | create_directory( VanillaSounds.parent_path() ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 335 |  | create_directory( VanillaAnimations.remove_filename() ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 336 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 337 | < | for(int j = 0; j < GDFPaths.size(); j++) { | 
 
 
 
 
 
 
 
 
 | 337 | > | for(unsigned int j = 0; j < GDFPaths.size(); j++) { | 
 
 
 
 
 
 
 
 
 
 
 | 338 |  | logfile << "\tReimporting " << GDFPaths[j].filename() << ".oni\n"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 339 |  | setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + ": reimporting " + GDFPaths[j].filename() ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 340 |  | system((strOniSplit + " " + strImportOption + " " + GDFPaths[j].string() + " " + VanillaPaths[j].string()).c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 411 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 412 |  | try | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 413 |  | { | 
 
 
 
 
 
 
 
 
 
 
 | 414 | < | directory_iterator end_iter; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 412 | < | for (directory_iterator dir_itr("./packages"); dir_itr != end_iter; ++dir_itr) | 
 
 
 
 
 
 
 
 
 | 414 | > | for (directory_iterator dir_itr("./packages"), end_itr; dir_itr != end_itr; ++dir_itr) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 415 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 416 |  | file.open((dir_itr->path().string() + "/" + MODINFO_CFG).c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 417 |  | //cout << filename << "\n"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 490 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 491 |  | else if (!HasOnis.compare(*iter)) { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 492 |  | iter++; iter++; | 
 
 
 
 
 
 
 
 
 
 
 | 493 | < | if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasOnis = 1; //Gotta love c++'s lack of a standard case-insensitive | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 494 | < | else if (!HasBSL.compare(*iter)) { // string comparer...I know my implementation here sucks. I need to change it to check each character one by one. At the moment, | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 495 | < | iter++; iter++;}  // using "YFR" would probably set it off. :< | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 496 | < |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 497 | < | if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasBSL = 1; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 493 | > | if ( boost::iequals(*iter, "Yes")) package.hasOnis = 1; | 
 
 
 
 
 | 494 | > | } | 
 
 
 
 
 | 495 | > | else if (!HasBSL.compare(*iter)) { // string comparer...I know my implementation here sucks. I need to change it to check each character one by one. At the moment, | 
 
 
 
 
 | 496 | > | iter++; iter++;  // using "YFR" would probably set it off. :< | 
 
 
 
 
 | 497 | > | if ( boost::iequals(*iter, "Yes")) package.hasBSL = 1; | 
 
 
 
 
 | 498 | > | else if ( boost::iequals(*iter, "Addon")) package.hasAddon = 1; | 
 
 
 
 
 
 
 
 
 
 
 | 499 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 500 |  | else if (!HasDeltas.compare(*iter)) { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 501 |  | iter++; iter++; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 521 |  | //cout << " "; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 522 |  | package.category += *iter + " "; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 523 |  | } | 
 
 
 
 
 
 
 
 
 | 521 | – | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 524 |  | } | 
 
 
 
 
 
 
 
 
 
 
 | 525 | < | else if (!Creator.compare(*iter))  {    //if it contains the name | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 526 | < | for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {     //interates through the words, ends if it reaches the end of the line or a "//" comment | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 527 | < | if (ARROW.compare(*iter) && Creator.compare(*iter)) {                   //ignores "->" and "Category" | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 528 | < | //cout << *iter; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 529 | < | //cout << " "; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 530 | < | package.creator += *iter + " "; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 531 | < | } | 
 
 
 
 
 
 
 
 
 | 525 | > | } | 
 
 
 
 
 | 526 | > | else if (!Creator.compare(*iter))  {    //if it contains the name | 
 
 
 
 
 | 527 | > | for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {     //interates through the words, ends if it reaches the end of the line or a "//" comment | 
 
 
 
 
 | 528 | > | if (ARROW.compare(*iter) && Creator.compare(*iter)) {                   //ignores "->" and "Category" | 
 
 
 
 
 | 529 | > | //cout << *iter; | 
 
 
 
 
 | 530 | > | //cout << " "; | 
 
 
 
 
 | 531 | > | package.creator += *iter + " "; | 
 
 
 
 
 
 
 
 
 
 
 | 532 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 533 |  | } | 
 
 
 
 
 
 
 
 
 
 
 | 534 | < | else if (!Readme.compare(*iter))  {     //if it contains the name | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 535 | < | for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {     //interates through the words, ends if it reaches the end of the line or a "//" comment | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 536 | < | if (ARROW.compare(*iter) && Readme.compare(*iter)) {                    //ignores "->" and "Category" | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 537 | < | if(!(*iter).compare("\\n")) package.readme += '\n'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 538 | < | else package.readme += *iter + " "; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 539 | < | } | 
 
 
 
 
 
 
 
 
 | 534 | > | } | 
 
 
 
 
 | 535 | > | else if (!Readme.compare(*iter))  {     //if it contains the name | 
 
 
 
 
 | 536 | > | for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {     //interates through the words, ends if it reaches the end of the line or a "//" comment | 
 
 
 
 
 | 537 | > | if (ARROW.compare(*iter) && Readme.compare(*iter)) {                    //ignores "->" and "Category" | 
 
 
 
 
 | 538 | > | if(!(*iter).compare("\\n")) package.readme += '\n'; | 
 
 
 
 
 | 539 | > | else package.readme += *iter + " "; | 
 
 
 
 
 
 
 
 
 
 
 | 540 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 541 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 542 |  | } | 
 
 
 
 
 
 
 
 
 | 541 | – |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 543 |  | } | 
 
 
 
 
 
 
 
 
 
 
 | 544 | < | package.doOutput(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 545 | < | return package; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 544 | > |  | 
 
 
 
 
 | 545 | > | } | 
 
 
 
 
 | 546 | > | package.doOutput(); | 
 
 
 
 
 | 547 | > | return package; | 
 
 
 
 
 
 
 
 
 
 
 | 548 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 549 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 550 |  | void recompileAll(vector<string> installedMods) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 614 |  | if ( is_directory( dir_itr->status() ) &&  dir_itr.level() == 1) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 615 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 616 |  | importCommand = strOniSplit + " " + strImportOption + " " + dir_itr->path().parent_path().string() + '/' + dir_itr->path().filename(); | 
 
 
 
 
 
 
 
 
 
 
 | 617 | < | for (int i = 0; i < installedMods.size(); ++i) { | 
 
 
 
 
 
 
 
 
 | 617 | > | for (unsigned int i = 0; i < installedMods.size(); ++i) { | 
 
 
 
 
 
 
 
 
 
 
 | 618 |  | if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename()  )) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 619 |  | importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 620 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 687 |  | if ( is_directory( dir_itr->status() ) ) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 688 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 689 |  | importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " "; | 
 
 
 
 
 
 
 
 
 
 
 | 690 | < | for (int i = 0; i < installedMods.size(); ++i) { | 
 
 
 
 
 
 
 
 
 | 690 | > | for (unsigned int i = 0; i < installedMods.size(); ++i) { | 
 
 
 
 
 
 
 
 
 
 
 | 691 |  | if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename()  )) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 692 |  | importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 693 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 714 |  | logfile.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 715 |  | }} | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 716 |  | } | 
 
 
 
 
 
 
 
 | 717 | + |  | 
 
 
 
 
 
 
 
 | 718 | + |  | 
 
 
 
 
 
 
 
 | 719 | + |  | 
 
 
 
 
 
 
 
 | 720 | + |  | 
 
 
 
 
 
 
 
 | 721 | + |  | 
 
 
 
 
 
 
 
 | 722 | + |  | 
 
 
 
 
 
 
 
 | 723 | + |  | 
 
 
 
 
 
 
 
 | 724 | + |  | 
 
 
 
 
 
 
 
 | 725 | + | ofstream BSLlog("BSL.log"); | 
 
 
 
 
 
 
 
 | 726 | + |  | 
 
 
 
 
 
 
 
 | 727 | + | vector<string> BSLfolders; | 
 
 
 
 
 
 
 
 | 728 | + | vector<string> skippedfolders; | 
 
 
 
 
 
 
 
 | 729 | + |  | 
 
 
 
 
 
 
 
 | 730 | + |  | 
 
 
 
 
 
 
 
 | 731 | + |  | 
 
 
 
 
 
 
 
 | 732 | + | for ( directory_iterator dir_itr( "../GameDataFolder/IGMD/" ), end_itr; | 
 
 
 
 
 
 
 
 | 733 | + | dir_itr != end_itr; | 
 
 
 
 
 
 
 
 | 734 | + | ++dir_itr ) { | 
 
 
 
 
 
 
 
 | 735 | + | if( exists(dir_itr->path().string() + "/ignore.txt") ){ | 
 
 
 
 
 
 
 
 | 736 | + | BSLfolders.push_back(dir_itr->path().filename()); | 
 
 
 
 
 
 
 
 | 737 | + | skippedfolders.push_back(dir_itr->path().filename()); | 
 
 
 
 
 
 
 
 | 738 | + | } | 
 
 
 
 
 
 
 
 | 739 | + | } | 
 
 
 
 
 
 
 
 | 740 | + |  | 
 
 
 
 
 
 
 
 | 741 | + | for (int i = installedMods.size() - 1; i >= 0; i--) {                                                   //Iterates through the installed mods (backwards :P) | 
 
 
 
 
 
 
 
 | 742 | + | for (unsigned int j = 0; j < globalPackages.size(); ++j) {                              //looking in the global packages | 
 
 
 
 
 
 
 
 | 743 | + | if (globalPackages[j].modStringName == installedMods[i]) {      //for a mod that has BSL in it | 
 
 
 
 
 
 
 
 | 744 | + | BSLlog << "Testing " << globalPackages[j].modStringName << "\n" | 
 
 
 
 
 
 
 
 | 745 | + | << "HasBSL: " << globalPackages[j].hasBSL << "\n" | 
 
 
 
 
 
 
 
 | 746 | + | << "HasAddon: " << globalPackages[j].hasAddon << "\n"; | 
 
 
 
 
 
 
 
 | 747 | + | if(!(globalPackages[j].hasAddon || globalPackages[j].hasBSL)) break; //skip non-BSL | 
 
 
 
 
 
 
 
 | 748 | + | if( exists( "packages/" + globalPackages[j].modStringName + "/BSL" ) ) | 
 
 
 
 
 
 
 
 | 749 | + | copyBSL("packages/" + globalPackages[j].modStringName + "/BSL", BSLfolders, globalPackages[j] ); | 
 
 
 
 
 
 
 
 | 750 | + | } | 
 
 
 
 
 
 
 
 | 751 | + |  | 
 
 
 
 
 
 
 
 | 752 | + | } | 
 
 
 
 
 
 
 
 | 753 | + | } | 
 
 
 
 
 
 
 
 | 754 | + |  | 
 
 
 
 
 
 
 
 | 755 | + | ModPackage emptyPackage; | 
 
 
 
 
 
 
 
 | 756 | + | copyBSL("packages/VanillaBSL/IGMD", BSLfolders, emptyPackage); | 
 
 
 
 
 
 
 
 | 757 | + | BSLlog.close(); | 
 
 
 
 
 
 
 
 | 758 | + |  | 
 
 
 
 
 
 
 
 | 759 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 760 |  | logfile << "Writing config file"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 761 |  | writeInstalledMods(installedMods); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 762 |  | setProgressBar(1000); | 
 
 
 
 
 
 
 
 
 
 
 | 763 | < | setStatusArea("Done! You can now play Oni."); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 763 | > |  | 
 
 
 
 
 | 764 | > | string finallyDone = "Done! You can now play Oni."; | 
 
 
 
 
 | 765 | > |  | 
 
 
 
 
 | 766 | > | a | 
 
 
 
 
 | 767 | > |  | 
 
 
 
 
 | 768 | > | setStatusArea(finallyDone); | 
 
 
 
 
 
 
 
 
 
 
 | 769 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 770 |  | ptime end_time(second_clock::local_time()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 771 |  | time_period total_time (start_time, end_time); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 774 |  | ofstream logfile2("Install.log", ios::app | ios::ate); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 775 |  | string outstring = (string)"\n\nGlobalization ended " + to_simple_string(end_time) + "\nThe process took ";// + (string)total_time.length(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 776 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 777 | < | logfile2 << "\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length(); | 
 
 
 
 
 
 
 
 
 | 777 | > | logfile2 << "\nInstallation ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length(); | 
 
 
 
 
 
 
 
 
 
 
 | 778 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 779 |  | //logfile2.write(outstring.c_str(), outstring.length()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 780 |  | logfile2.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 783 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 784 |  | Sleep(1000); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 785 |  | setProgressBar(0); | 
 
 
 
 
 
 
 
 
 | 735 | – |  | 
 
 
 
 
 
 
 
 
 | 736 | – | } | 
 
 
 
 
 
 
 
 
 | 737 | – | catch(exception & ex) { | 
 
 
 
 
 
 
 
 
 | 738 | – | remove("Install.log"); | 
 
 
 
 
 
 
 
 
 | 739 | – | ofstream logfile("Install.log"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 786 |  |  | 
 
 
 
 
 
 
 
 | 787 | + | } | 
 
 
 
 
 
 
 
 | 788 | + | catch(exception & ex) { | 
 
 
 
 
 
 
 
 | 789 | + | remove("Install.log"); //why did we do this? :| | 
 
 
 
 
 
 
 
 | 790 | + | ofstream logfile("Install.log"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 791 |  |  | 
 
 
 
 
 
 
 
 
 
 
 | 792 | < | logfile << "Warning, exception " << ex.what() << "!"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 793 | < | setStatusArea("Warning, exception " + (string)ex.what() + "!"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 794 | < | logfile.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 795 | < | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 796 | < | busy = 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 792 | > |  | 
 
 
 
 
 | 793 | > | logfile << "Warning, exception " << ex.what() << "!"; | 
 
 
 
 
 | 794 | > | setStatusArea("Warning, exception " + (string)ex.what() + "!"); | 
 
 
 
 
 | 795 | > | logfile.close(); | 
 
 
 
 
 | 796 | > | } | 
 
 
 
 
 | 797 | > | busy = 0; | 
 
 
 
 
 
 
 
 
 
 
 | 798 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 799 |  |  | 
 
 
 
 
 
 
 
 | 800 | + | void copyBSL(string copypath, vector<string> BSLfolders, ModPackage pkg) { | 
 
 
 
 
 
 
 
 | 801 | + | try { | 
 
 
 
 
 
 
 
 | 802 | + | for ( directory_iterator dir_itr( copypath ), end_itr; | 
 
 
 
 
 
 
 
 | 803 | + | dir_itr != end_itr; | 
 
 
 
 
 
 
 
 | 804 | + | ++dir_itr ) { | 
 
 
 
 
 
 
 
 | 805 | + |  | 
 
 
 
 
 
 
 
 | 806 | + | if ( is_directory( dir_itr->path() ) && dir_itr->path().string() != ".svn" ) { | 
 
 
 
 
 
 
 
 | 807 | + | int skip_folder = 0; | 
 
 
 
 
 
 
 
 | 808 | + | for(unsigned int k = 0; k < BSLfolders.size(); k++)             {//iterate through already found BSL folders | 
 
 
 
 
 
 
 
 | 809 | + | if(dir_itr->path().filename() == BSLfolders[k]) { | 
 
 
 
 
 
 
 
 | 810 | + | skip_folder = 1; | 
 
 
 
 
 
 
 
 | 811 | + | break; | 
 
 
 
 
 
 
 
 | 812 | + | } | 
 
 
 
 
 
 
 
 | 813 | + | } | 
 
 
 
 
 
 
 
 | 814 | + | if (!skip_folder && !exists("../GameDataFolder/IGMD/" + dir_itr->path().filename() + "/ignore.txt")) { | 
 
 
 
 
 
 
 
 | 815 | + | remove_all( "../GameDataFolder/IGMD/" + dir_itr->path().filename() ); | 
 
 
 
 
 
 
 
 | 816 | + | Sleep(100); | 
 
 
 
 
 
 
 
 | 817 | + | create_directory( "../GameDataFolder/IGMD/" + dir_itr->path().filename()); | 
 
 
 
 
 
 
 
 | 818 | + |  | 
 
 
 
 
 
 
 
 | 819 | + | for ( directory_iterator bsl_itr( dir_itr->path() ); | 
 
 
 
 
 
 
 
 | 820 | + | bsl_itr != end_itr; | 
 
 
 
 
 
 
 
 | 821 | + | bsl_itr++ ) { | 
 
 
 
 
 
 
 
 | 822 | + | if ( bsl_itr->path().extension() == ".bsl" ) { | 
 
 
 
 
 
 
 
 | 823 | + | copy_file(bsl_itr->path(),  "../GameDataFolder/IGMD/" + dir_itr->path().filename() + "/" + bsl_itr->path().filename()); | 
 
 
 
 
 
 
 
 | 824 | + | } | 
 
 
 
 
 
 
 
 | 825 | + | } | 
 
 
 
 
 
 
 
 | 826 | + | BSLfolders.push_back( dir_itr->path().filename() ); | 
 
 
 
 
 
 
 
 | 827 | + | } | 
 
 
 
 
 
 
 
 | 828 | + | } | 
 
 
 
 
 
 
 
 | 829 | + | } | 
 
 
 
 
 
 
 
 | 830 | + | } | 
 
 
 
 
 
 
 
 | 831 | + | catch ( const std::exception & ex ) | 
 
 
 
 
 
 
 
 | 832 | + | { | 
 
 
 
 
 
 
 
 | 833 | + | setStatusArea("Warning, exception " + (string)ex.what() + "!"); | 
 
 
 
 
 
 
 
 | 834 | + | while(1) Sleep(1000); | 
 
 
 
 
 
 
 
 | 835 | + | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 836 |  |  | 
 
 
 
 
 
 
 
 | 837 | + | } | 
 
 
 
 
 
 
 
 | 838 | + |  | 
 
 
 
 
 
 
 
 | 839 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 840 |  | void writeInstalledMods(vector<string> installedMods) | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 841 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 842 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 918 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 919 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 920 |  |  | 
 
 
 
 
 
 
 
 
 | 831 | – | vector<string> globalInstalledMods; | 
 
 
 
 
 
 
 
 
 | 832 | – | vector<ModPackage> globalPackages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 921 |  | #include "boost/thread.hpp" | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 922 |  | #include <boost/thread/mutex.hpp> | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 923 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1291 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1292 |  | globalPackages = getPackages(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1293 |  | globalInstalledMods = getInstallString(); | 
 
 
 
 
 
 
 
 
 
 
 | 1294 | < | for (int i = 0; i < globalPackages.size(); i++) { | 
 
 
 
 
 
 
 
 
 | 1294 | > | for (unsigned int i = 0; i < globalPackages.size(); i++) { | 
 
 
 
 
 
 
 
 
 
 
 | 1295 |  | Mods_CheckboxList->Append(globalPackages[i].name.c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1296 |  | if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1297 |  | } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1330 |  | { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1331 |  | switch(SelectAll->Get3StateValue()) { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1332 |  | case wxCHK_UNCHECKED: | 
 
 
 
 
 
 
 
 
 
 
 | 1333 | < | for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false); | 
 
 
 
 
 
 
 
 
 | 1333 | > | for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false); | 
 
 
 
 
 
 
 
 
 
 
 | 1334 |  | //SelectAll->Set3StateValue(wxCHK_CHECKED); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1335 |  | break; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1336 |  | case wxCHK_CHECKED: | 
 
 
 
 
 
 
 
 
 
 
 | 1337 | < | for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, true); | 
 
 
 
 
 
 
 
 
 | 1337 | > | for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, true); | 
 
 
 
 
 
 
 
 
 
 
 | 1338 |  | //SelectAll->Set3StateValue(wxCHK_UNCHECKED); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1339 |  | break; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1340 |  | case wxCHK_UNDETERMINED: | 
 
 
 
 
 
 
 
 
 
 
 | 1341 | < | for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false); | 
 
 
 
 
 
 
 
 
 | 1341 | > | for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false); | 
 
 
 
 
 
 
 
 
 
 
 | 1342 |  | //SelectAll->Set3StateValue(wxCHK_CHECKED); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1343 |  | break; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1344 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1521 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1522 |  | vector<string> localPackages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1523 |  | localPackages.push_back("00000Globalize"); | 
 
 
 
 
 
 
 
 
 
 
 | 1524 | < | for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName ); | 
 
 
 
 
 
 
 
 
 | 1524 | > | for(unsigned int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName ); | 
 
 
 
 
 
 
 
 
 
 
 | 1525 |  | if ( !localPackages.empty() )   { | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1526 |  | sort(localPackages.begin(), localPackages.end()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1527 |  | localPackages[0] = "Globalize"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1663 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1664 |  | Mods_CheckboxList->Clear(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1665 |  | //globalInstalledMods = getPackages(); | 
 
 
 
 
 
 
 
 
 
 
 | 1666 | < | for (int i = 0; i < globalPackages.size(); i++) { | 
 
 
 
 
 
 
 
 
 | 1666 | > | for (unsigned int i = 0; i < globalPackages.size(); i++) { | 
 
 
 
 
 
 
 
 
 
 
 | 1667 |  | Mods_CheckboxList->Append(globalPackages[i].name.c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1668 |  | if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1669 |  | //else Mods_CheckboxList->Check(i,0); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1726 |  | ofstream file(openFileDialog->GetPath().c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1727 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1728 |  | vector<string>list; | 
 
 
 
 
 
 
 
 
 
 
 | 1729 | < | for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName ); | 
 
 
 
 
 
 
 
 
 | 1729 | > | for(unsigned int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName ); | 
 
 
 
 
 
 
 
 
 
 
 | 1730 |  | vector<string>::iterator begin_iter = list.begin(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1731 |  | vector<string>::iterator end_iter = list.end(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1732 |  |  |