ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/Installer/trunk/source/main_window.cpp
(Generate patch)

Comparing AE/Installer/trunk/source/main_window.cpp (file contents):
Revision 399 by gumby, Mon Jul 6 22:56:35 2009 UTC vs.
Revision 462 by gumby, Sat Oct 10 02:49:27 2009 UTC

# Line 33 | Line 33 | ITaskbarList3 *pTaskbarList3;
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
# Line 42 | Line 43 | ITaskbarList3 *pTaskbarList3;
43   #include <dirent.h>
44   #endif
45  
46 < //const string strInstallerVersion = "1.0";
46 >
47   const bool SPLIT = 1;
48   const bool NOT_SPLIT = 0;
49   bool splitInstances = SPLIT;
# Line 64 | Line 65 | using namespace boost::filesystem;
65   using namespace std;
66  
67  
68 + vector<string> globalInstalledMods;
69 + vector<ModPackage> globalPackages;
70  
71  
72   #include "boost/date_time/gregorian/gregorian.hpp"
# Line 74 | Line 77 | string escapePath(string input) {
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;
# Line 121 | Line 124 | int globalizeData(void)
124                  path TRAM = Animations / "level0_TRAM";
125  
126                  vector<path> GDFPaths;
127 <                GDFPaths.push_back(Characters);
127 >                //GDFPaths.push_back(Characters);
128                  GDFPaths.push_back(Particles);
129                  GDFPaths.push_back(Textures);
130                  GDFPaths.push_back(Sounds);
# Line 129 | Line 132 | int globalizeData(void)
132                  GDFPaths.push_back(TRAM);
133  
134  
135 <                path VanillaCharacters = "packages/VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
136 <                path VanillaParticles = "packages/VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
137 <                path VanillaTextures  = "packages/VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
138 <                path VanillaSounds = "packages/VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
139 <                path VanillaAnimations = "packages/VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
140 <                path VanillaTRAC = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
141 <                path VanillaTRAM = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
135 >                path VanillaCharacters = "VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
136 >                path VanillaParticles = "VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
137 >                path VanillaTextures  = "VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
138 >                path VanillaSounds = "VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
139 >                path VanillaAnimations = "VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
140 >                path VanillaTRAC = "VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
141 >                path VanillaTRAM = "VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
142  
143                  vector<path> VanillaPaths;
144  
145 <                VanillaPaths.push_back(VanillaCharacters);
145 >                //VanillaPaths.push_back(VanillaCharacters);
146                  VanillaPaths.push_back(VanillaParticles);
147                  VanillaPaths.push_back(VanillaTextures);
148                  VanillaPaths.push_back(VanillaSounds);
# Line 169 | Line 172 | int globalizeData(void)
172  
173                  create_directory( "packages" );
174  
175 <                if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats");
176 <                create_directory( "packages/VanillaDats" );
177 <                create_directory( "packages/VanillaDats/level0_Final/" );
175 >                if (exists("VanillaDats")) remove_all("VanillaDats");
176 >                create_directory( "VanillaDats" );
177 >                create_directory( "VanillaDats/level0_Final/" );
178                  //blah blah finish this.
179 <                //logfile <<  "packages/VanillaDats/level0_Final/ created";
179 >                //logfile <<  "VanillaDats/level0_Final/ created";
180                  create_directory( Characters );
181                  create_directory( Particles );
182                  create_directory( Archive );
# Line 205 | Line 208 | int globalizeData(void)
208                                  create_directory( "../GameDataFolder/level" + levels[i] + "_Final" );
209                                  //                              setStatusArea(strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat");
210                                  system((strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat").c_str());
211 <                                create_directory( "packages/VanillaDats/level" + levels[i] + "_Final" );
212 <                                create_directory( "packages/VanillaDats/level" + levels[i] + "_Final/level" + levels[i] + "_Final" );
211 >                                create_directory( "VanillaDats/level" + levels[i] + "_Final" );
212 >                                create_directory( "VanillaDats/level" + levels[i] + "_Final/level" + levels[i] + "_Final" );
213  
214                                  directory_iterator end_iter;
215                                  for ( directory_iterator dir_itr( "../GameDataFolder/level" + levels[i] + "_Final" ); dir_itr != end_iter; ++dir_itr )
# Line 229 | Line 232 | int globalizeData(void)
232                                                          else remove(dir_itr->path());
233                                                  }
234                                                  else if (dir_itr->path().filename().substr(0,4) == "TRAC"
235 <                                                        || dir_itr->path().filename().substr(0,4) == "ONVL") {
235 >                                                        ) {
236                                                                  cout <<dir_itr->path().filename() << "\n";
237                                                                  if(!exists( TRAC / dir_itr->filename())) rename(dir_itr->path(), TRAC / dir_itr->filename());
238                                                                  else remove(dir_itr->path());
# Line 249 | Line 252 | int globalizeData(void)
252                                                  else if (dir_itr->path().filename().substr(0,4) == "ONCC"
253                                                          || dir_itr->path().filename().substr(0,4) == "TRBS"
254                                                          || dir_itr->path().filename().substr(0,4) == "ONCV"
255 +                                                        || dir_itr->path().filename().substr(0,4) == "ONVL"
256                                                          || dir_itr->path().filename().substr(0,4) == "TRMA"
257                                                          || dir_itr->path().filename().substr(0,4) == "TRSC"
258                                                          || dir_itr->path().filename().substr(0,4) == "TRAS") {
# Line 286 | Line 290 | int globalizeData(void)
290                                                  else if (dir_itr->path().filename().substr(0,4) == "ONWC") { //fix for buggy ONWC overriding
291                                                                  cout <<dir_itr->path().filename() << "\n";
292  
293 <                                                                if(!exists( "packages/VanillaDats/level0_Final/level0_Final/" +  dir_itr->filename())) rename(dir_itr->path(), "packages/VanillaDats/level0_Final/level0_Final/" +  dir_itr->filename());
293 >                                                                if(!exists( "VanillaDats/level0_Final/level0_Final/" +  dir_itr->filename())) rename(dir_itr->path(), "VanillaDats/level0_Final/level0_Final/" +  dir_itr->filename());
294                                                                  else remove(dir_itr->path());
295                                                  }
296 +
297                                                  if (exists(dir_itr->path())) {
298  
299                                                  }
# Line 315 | Line 320 | int globalizeData(void)
320                          //printf(levels[i],"%d",levels[i]);
321                          //printf(Step_x_x,"Step %d/%d: reimporting level", parts_done + 1, 7 + 2 * num_levels); setStatusArea((string)Step_x_x + levels[i] + (string)"_Final.dat");
322                          setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + " reimporting level" + levels[i]+"_Final.oni");
323 <                        logfile << (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final packages/VanillaDats/level" + levels[i] + "_Final/level"
323 >                        logfile << (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final VanillaDats/level" + levels[i] + "_Final/level"
324                                  + levels[i] + "_Final/level" + levels[i] + "_Final.oni >> Globalize.log").c_str() << '\n';
325 <                        string sys_str = (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final packages/VanillaDats/level" + levels[i] + "_Final/level"
326 <                                + levels[i] + "_Final/level" + levels[i] + "_Final.oni >> Globalize.log");
325 >                        string sys_str = (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final VanillaDats/level" + levels[i] + "_Final/level"
326 >                                + levels[i] + "_Final/level" + levels[i] + "_Final.oni");
327                                  system(sys_str.c_str() );
328                          setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
329                          parts_done++;
330                  }
331 <                create_directory( VanillaCharacters.parent_path() );
331 >                //create_directory( VanillaCharacters.parent_path() );
332                  create_directory( VanillaParticles.parent_path() );
333                  create_directory( VanillaTextures.parent_path() );
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());
341                          parts_done++;
342                          setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
343                  }
344 +                logfile << "\nMoving level0_Characters\n";
345 +                setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + ": moving level0_Characters" );      
346 +                copy((path)"../GameDataFolder/level0_Characters", (path)("VanillaDats/level0_Final"));
347                  /*
348                  printf(Step_x_x,"Step %d/%d: reimporting level0_Characters", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) ));
349                  system((strOniSplit + " " + strImportOption + " " + Characters.string() + " " + VanillaCharacters.string()).c_str());
# Line 357 | Line 365 | int globalizeData(void)
365                  copy((path)"packages/VanillaBSL/IGMD", (path)"../GameDataFolder");
366                  setProgressBar( 1000 );
367  
368 <                copy("../../persist.dat","..");
369 <                copy("../../key_config.txt","..");
368 >                if(exists("../../persist.dat")) if(!exists("../persist.dat"))
369 >                        copy("../../persist.dat","..");
370 >                if(exists("../../key_config.txt"))if(!exists("../key_config.txt"))
371 >                        copy("../../key_config.txt","..");
372                  
373   #ifndef WIN32
374                  /* On Mac only, set the current GDF to the AE GDF by writing to Oni's global preferences file (thankfully a standard OS X ".plist" XML file).
# Line 401 | Line 411 | vector<ModPackage> getPackages(void)
411  
412          try
413          {
414 <                directory_iterator end_iter;
405 <                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";
# Line 481 | Line 490 | ModPackage fileToModPackage(fstream &fil
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++;  
# Line 511 | Line 521 | ModPackage fileToModPackage(fstream &fil
521                                                  //cout << " ";
522                                                  package.category += *iter + " ";
523                                          }
514                                }
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                  }
534
543          }
544 <        package.doOutput();
545 <        return package;
544 >
545 > }
546 > package.doOutput();
547 > return package;
548   }
549  
550   void recompileAll(vector<string> installedMods)
551 < {
551 > {try {
552          busy = 1;
553          using namespace boost::gregorian;
554          using namespace boost::posix_time;
555          using boost::lexical_cast;
556          using boost::bad_lexical_cast;
557 <        
548 <        setStatusArea("Importing levels...");
549 <        //setStatusArea("Recompiling Data...");
550 <        path vanilla_dir = "./packages/VanillaDats/";
557 >                path vanilla_dir = "./VanillaDats/";
558          string importCommand = "";
559          char statusString[128];
560          int numberOfDats = 0;
561          int j = 1;
562          string datString;
563 +        
564 +
565 +        setStatusArea("Importing levels...");
566 +        //setStatusArea("Recompiling Data...");
567 +
568          std::stringstream out;
569  
570          ptime start_time(second_clock::local_time());
571          clearOldDats();
572 <        remove("Install.log");
572 >        
573 >        if(exists("Install.log")) remove("Install.log");
574          ofstream logfile("Install.log");
575          logfile << "Mod Installation started " << to_simple_string(start_time) << endl;
576          logfile.close();
577 +
578 +
579          if(splitInstances == SPLIT){
580                  recursive_directory_iterator end_iter;
581  
# Line 574 | Line 589 | void recompileAll(vector<string> install
589                                          numberOfDats++;
590                                  }
591                          }
592 <                        catch(exception ex) {
592 >                        catch(exception & ex) {
593 >                                        remove("Install.log");
594 >                                        ofstream logfile("Install.log");
595 >
596  
597 +                                        logfile << "Warning, exception " << ex.what() << "!";
598 +                                        setStatusArea("Warning, exception " + (string)ex.what() + "!");
599 +                                        logfile.close();        
600                          }
601                  }
602 <
602 >                try {
603                  //recursive_directory_iterator end_iter;
604 <
604 >                
605  
606                  out << numberOfDats;
607                  datString = out.str();
587                try {
608                          for ( recursive_directory_iterator dir_itr( vanilla_dir );
609                                  dir_itr != end_iter;
610                                  ++dir_itr )
# Line 594 | Line 614 | void recompileAll(vector<string> install
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  
621 <                                                        //else cout << " packages/VanillaDats/" + installedMods[i] + "/oni/";
621 >                                                        //else cout << " VanillaDats/" + installedMods[i] + "/oni/";
622                                                  }
623                                                  importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
624  
# Line 667 | Line 687 | void recompileAll(vector<string> install
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                                          }
# Line 694 | Line 714 | void recompileAll(vector<string> install
714                                  logfile.close();
715                          }}
716          }
717 +
718 +
719 +
720 +        
721 +
722 +
723 +
724 +
725 +                
726 +                
727 +                vector<string> BSLfolders;
728 +                vector<string> skippedfolders;
729 +
730 +                
731 + ofstream BSLlog("BSL.log");
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 +                                        BSLlog << "Copied " <<  globalPackages[j].modStringName << "!\n";
751 +                                        }
752 +
753 +                                }
754 +
755 +                        }
756 +                }
757 +
758 +                ModPackage emptyPackage;
759 +                emptyPackage.modStringName = "VanillaBSL";
760 +                emptyPackage.hasBSL = 1;
761 +                copyBSL("packages/VanillaBSL/IGMD", BSLfolders, emptyPackage);
762 +                BSLlog.close();
763 +        
764 +
765          logfile << "Writing config file";
766          writeInstalledMods(installedMods);
767          setProgressBar(1000);
768 <        setStatusArea("Done! You can now play Oni.");
768 >        
769 >        string finallyDone = "Done! You can now play Oni.";
770 >        
771 >
772 >        
773 >        setStatusArea(finallyDone);
774  
775          ptime end_time(second_clock::local_time());
776          time_period total_time (start_time, end_time);
# Line 706 | Line 779 | void recompileAll(vector<string> install
779          ofstream logfile2("Install.log", ios::app | ios::ate);
780          string outstring = (string)"\n\nGlobalization ended " + to_simple_string(end_time) + "\nThe process took ";// + (string)total_time.length();
781  
782 <        logfile2 << "\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
782 >        logfile2 << "\nInstallation ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
783  
784          //logfile2.write(outstring.c_str(), outstring.length());
785          logfile2.close();
# Line 715 | Line 788 | void recompileAll(vector<string> install
788  
789          Sleep(1000);
790          setProgressBar(0);
791 +
792 +        }
793 +        catch(exception & ex) {
794 +                remove("Install.log"); //why did we do this? :|
795 +                ofstream logfile("Install.log");
796 +
797 +
798 +                logfile << "Warning, exception " << ex.what() << "!";
799 +                setStatusArea("Warning, exception " + (string)ex.what() + "!");
800 +                logfile.close();        
801 +        }
802          busy = 0;
803   }
804  
805 + void copyBSL(string copypath, vector<string>& BSLfolders, ModPackage pkg) {
806 +
807 +        ofstream BSLlog("BSL2.log", ios::app );
808 +        
809 +        try {
810 +                for ( directory_iterator dir_itr( copypath ), end_itr;
811 +                        dir_itr != end_itr;
812 +                        ++dir_itr ) {
813 +
814 +                                if ( is_directory( dir_itr->path() ) && dir_itr->path().string() != ".svn" ) {  
815 +                                        BSLlog << "Testing " << dir_itr->path().string() << " HasBSL: " << pkg.hasBSL << " HasAddon: " << pkg.hasAddon << "\n";
816 +                                        int skip_folder = 0;
817 +
818 +                                        for(unsigned int k = 0; k < BSLfolders.size(); k++)             {//iterate through already found BSL folders    
819 +                                                BSLlog << "testing " << dir_itr->path().filename() << " vs " << BSLfolders[k] << "\n";
820 +                                                if(dir_itr->path().filename() == BSLfolders[k]) {
821 +                                                        skip_folder = 1;
822 +                                                        BSLlog << "skipping " << BSLfolders[k] << " in " << pkg.modStringName << "\n";
823 +                                                        break;
824 +                                                }
825 +                                        }
826 +                                        if (!skip_folder && !exists("../GameDataFolder/IGMD/" + dir_itr->path().filename() + "/ignore.txt")) {
827 +                                                remove_all( "../GameDataFolder/IGMD/" + dir_itr->path().filename() );
828 +                                                Sleep(100);
829 +                                                create_directory( "../GameDataFolder/IGMD/" + dir_itr->path().filename());
830 +                                                BSLlog << "Copied " << dir_itr->path().string() << " in " << pkg.modStringName << "!\n";
831 +                                                for ( directory_iterator bsl_itr( dir_itr->path() );
832 +                                                        bsl_itr != end_itr;
833 +                                                        bsl_itr++ ) {
834 +                                                                if ( bsl_itr->path().extension() == ".bsl" ) {
835 +                                                                        copy_file(bsl_itr->path(),  "../GameDataFolder/IGMD/" + dir_itr->path().filename() + "/" + bsl_itr->path().filename());
836 +                                                                }
837 +                                                }
838 +                                                BSLfolders.push_back( dir_itr->path().filename() ); //add back check for addon
839 +                                                BSLlog << "Pushing " << dir_itr->path().filename() << "\n" ;
840 +                                        }
841 +                                }
842 +                }
843 +        }
844 +        catch ( const std::exception & ex )
845 +        {
846 +                setStatusArea("Warning, exception " + (string)ex.what() + "!");
847 +                while(1) Sleep(1000);
848 +        }
849 +        BSLlog.close();
850 +        
851 + }
852 +
853 +
854   void writeInstalledMods(vector<string> installedMods)
855   {
856  
# Line 799 | Line 932 | void clearOldDats(void) {
932  
933   }
934  
802 vector<string> globalInstalledMods;
803 vector<ModPackage> globalPackages;
935   #include "boost/thread.hpp"
936   #include <boost/thread/mutex.hpp>
937  
# Line 1074 | Line 1205 | void MainWindow::CreateControls()
1205      StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
1206      StatusArea->SetName(_T("StatusArea"));
1207      StatusArea->SetFieldsCount(1);
1208 <    StatusArea->SetStatusText(_("AE Installer v1.0"), 0);
1208 >    StatusArea->SetStatusText(_("AE Installer v1.0.1"), 0);
1209      itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
1210  
1211      wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
# Line 1140 | Line 1271 | void MainWindow::CreateControls()
1271      // Connect events and objects
1272      Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
1273          ////@end MainWindow content construction
1274 <
1274 > #ifdef WIN32
1275          Handle = (HWND)GetHWND();
1276          ::CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList, (void **)&pTaskbarList);
1277 + #endif
1278  
1279  
1280 <        if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) {
1280 >        /*if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) {
1281                  strImportOption = "-import:sep";
1282                  splitInstances = NOT_SPLIT;
1283          }
1284          else {
1285                  strImportOption = "-import:nosep";
1286                  splitInstances = SPLIT;
1287 <        }
1287 >        }*/
1288 >        
1289 >
1290 > #ifndef WIN32
1291 >                strImportOption = "-import:sep";
1292 >                splitInstances = NOT_SPLIT;
1293 > #else
1294 >                strImportOption = "-import:nosep";
1295 >                splitInstances = SPLIT;
1296 > #endif
1297 >
1298 > #ifndef WIN32
1299 >        strImportOption = "-import:sep";
1300 >        splitInstances = NOT_SPLIT;
1301 > #else
1302 >        strImportOption = "-import:nosep";
1303 >        splitInstances = SPLIT;
1304 > #endif
1305          
1306          globalPackages = getPackages();
1307          globalInstalledMods = getInstallString();
1308 <        for (int i = 0; i < globalPackages.size(); i++) {
1308 >        for (unsigned int i = 0; i < globalPackages.size(); i++) {
1309                  Mods_CheckboxList->Append(globalPackages[i].name.c_str());
1310                  if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
1311          }
# Line 1195 | Line 1344 | void MainWindow::OnSelectAllCheckboxClic
1344   {
1345          switch(SelectAll->Get3StateValue()) {
1346          case wxCHK_UNCHECKED:
1347 <                for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
1347 >                for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
1348                  //SelectAll->Set3StateValue(wxCHK_CHECKED);
1349                  break;
1350          case wxCHK_CHECKED:
1351 <                for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, true);
1351 >                for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, true);
1352                  //SelectAll->Set3StateValue(wxCHK_UNCHECKED);
1353                  break;
1354          case wxCHK_UNDETERMINED:
1355 <                for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
1355 >                for(unsigned int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
1356                  //SelectAll->Set3StateValue(wxCHK_CHECKED);
1357                  break;
1358  
# Line 1367 | Line 1516 | struct recompile
1516                  TheInstallButton->Disable();
1517                  recompileAll(thePackages);
1518                  TheInstallButton->Enable();
1519 +                
1520          }
1521  
1522          vector<string> thePackages;
1523   };
1524  
1525 + void globalize2(void) {
1526 +                TheInstallButton->Disable();
1527 +                globalizeData();
1528 +                TheInstallButton->Enable();
1529 + }
1530 +
1531 +
1532 +
1533   void MainWindow::OnInstallButtonClick( wxCommandEvent& event )
1534   {
1535  
1536          vector<string> localPackages;
1537 <        localPackages.push_back("Globalize");
1538 <        for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName );
1537 >        localPackages.push_back("00000Globalize");
1538 >        for(unsigned int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName );
1539          if ( !localPackages.empty() )   {
1540 <        
1540 >                sort(localPackages.begin(), localPackages.end());
1541 >                localPackages[0] = "Globalize";
1542                  //MainWindow::MainWindow().Hide();      
1543                  //      boost::thread thrd2(recompileAll(localPackages) );
1544                  //MainWindow::MainWindow().Show();
# Line 1518 | Line 1677 | void MainWindow::refreshMods (vector<str
1677  
1678          Mods_CheckboxList->Clear();
1679          //globalInstalledMods = getPackages();
1680 <        for (int i = 0; i < globalPackages.size(); i++) {
1680 >        for (unsigned int i = 0; i < globalPackages.size(); i++) {
1681                  Mods_CheckboxList->Append(globalPackages[i].name.c_str());
1682                  if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
1683                  //else Mods_CheckboxList->Check(i,0);
# Line 1581 | Line 1740 | void MainWindow::OnSaveClick( wxCommandE
1740                  ofstream file(openFileDialog->GetPath().c_str());
1741  
1742                  vector<string>list;
1743 <                for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
1743 >                for(unsigned int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
1744                  vector<string>::iterator begin_iter = list.begin();
1745                  vector<string>::iterator end_iter = list.end();
1746  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)