Ignore:
Timestamp:
May 27, 2010, 10:30:35 PM (14 years ago)
Author:
gumby
Message:

Allows new levels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • AE/Installer/trunk/source/installer.cpp

    r550 r551  
    598598                directory_iterator end_iter;
    599599               
    600                 for ( directory_iterator dir_itr( vanilla_dir );
    601                          dir_itr != end_iter;
    602                          ++dir_itr )
    603                 {
    604                         if ( is_directory( dir_itr->status() ) )
    605                         {
     600               
     601                char levelnums[256] = {0};
     602
     603
     604
     605                for(int k = 0; k < 256; k++) {
     606                        if( exists( (path)("./VanillaDats/level" + lexical_cast<std::string>(k) + "_final/") ) ) {
     607                                        levelnums[k] = 1;
     608                                       
     609                        }
     610                }
     611       
     612                for (int i = installedMods.size() - 1; i >= 0; i--) {                                                   //Iterates through the installed mods (backwards :P)
     613                        for (unsigned int j = 0; j < globalPackages.size(); ++j) {                              //looking in the global packages
     614                                if (globalPackages[j].modStringName == installedMods[i]) {      //for a mod that has BSL in it
     615                                        for(int k = 0; k < 256; k++) {
     616                                                if( globalPackages[j].hasOnis &&
     617                                                        exists( (path)("packages/" + globalPackages[j].modStringName + "/oni/level" + lexical_cast<std::string>(k) + "_final/") ) ) {
     618                                                        levelnums[k] = 1;
     619                                                       
     620                                                }
     621                                        }
     622                                }
     623                        }
     624                }
     625                for (int levelnum = 0; levelnum < 256; levelnum++)
     626                        if (levelnums[levelnum])
    606627                                numberOfDats++;
    607                         }
    608                 }
    609                
     628
    610629                out << numberOfDats;
    611630                datString = out.str();
    612                
    613                 for ( directory_iterator dir_itr( vanilla_dir );
    614                          dir_itr != end_iter;
    615                          ++dir_itr )
    616                 {
     631
     632                for(int levelnum = 0; levelnum < 256; levelnum++) {
    617633                        try
    618634                        {
    619                                 if ( is_directory( dir_itr->status() ) )
     635                                if ( levelnums[levelnum] )
    620636                                {
    621                                         importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " ";
     637                                        importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + "level" + lexical_cast<std::string>(levelnum) + "_Final ";
    622638                                        for (unsigned int i = 0; i < installedMods.size(); ++i) {
    623                                                 if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename() ))
    624                                                         importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename();
     639                                                if (exists((path)("packages/" + installedMods[i] + "/oni/level" + lexical_cast<std::string>(levelnum) + "_final") ))
     640                                                        importCommand += " packages/" + installedMods[i] + "/oni/level" + lexical_cast<std::string>(levelnum) + "_Final";
    625641                                        }
    626                                         importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
     642                                        importCommand += " ../GameDataFolder/level" + lexical_cast<std::string>(levelnum) + "_Final.dat >> Install.log";
    627643                                       
    628644                                        setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
    629645                                        setStatusArea("Step " + lexical_cast<std::string>(j) + '/' + lexical_cast<std::string>(numberOfDats)+ ": Importing " +
    630                                                                   dir_itr->path().filename() + " ");
     646                                                                  "level" + lexical_cast<std::string>(levelnum) + "_Final"+ " ");
    631647                                        system(importCommand.c_str());
    632648                                        j++;
Note: See TracChangeset for help on using the changeset viewer.