Пример #1
0
void ConfigPackMiniManager::setConfigDir(QString config_dir)
{
    if(config_dir.isEmpty()) return;

    if(!QDir(config_dir).exists())
        return;
    if(!QFileInfo(config_dir+"/main.ini").exists())
        return;

    m_cp_root_path = QDir(config_dir).absolutePath()+"/";

    QString main_ini = m_cp_root_path + "main.ini";
    QSettings mainset(main_ini, QSettings::IniFormat);
    mainset.setIniCodec("UTF-8");

    QString customAppPath = QCoreApplication::applicationDirPath()+"/";

    m_dir_list.clear();
    m_dir_list.push_back(m_cp_root_path);

    mainset.beginGroup("main");
    customAppPath = mainset.value("application-path", customAppPath).toString();
    customAppPath.replace('\\', '/');
    m_cp_root_path = (mainset.value("application-dir", false).toBool() ?
                          customAppPath + "/" : m_cp_root_path + "/data/" );
    m_dir_list.push_back( m_cp_root_path + mainset.value("graphics-level", "data/graphics/level").toString() + "/");
    appendDirList(m_dir_list.last());
    m_dir_list.push_back( m_cp_root_path + mainset.value("graphics-worldmap", "data/graphics/worldmap").toString() + "/");
    appendDirList(m_dir_list.last());
    m_dir_list.push_back( m_cp_root_path + mainset.value("graphics-characters", "data/graphics/characters").toString() + "/");
    appendDirList(m_dir_list.last());
    m_dir_list.push_back( m_cp_root_path + mainset.value("custom-data", "data-custom").toString() + "/");
    appendDirList(m_dir_list.last());
    mainset.endGroup();

    for(int i=0; i< m_dir_list.size(); i++)
    {
        m_dir_list[i].replace('\\', '/');
        m_dir_list[i].remove("//");
        if( !m_dir_list[i].endsWith('/') && !m_dir_list[i].endsWith('\\') )
            m_dir_list[i].push_back('/');
    }

    m_is_using=true;
}
Пример #2
0
bool ConfigManager::loadBasics()
{
    QString gui_ini = config_dir + "main.ini";
    QSettings guiset(gui_ini, QSettings::IniFormat);
    guiset.setIniCodec("UTF-8");
    guiset.beginGroup("main");
    {
        data_dir = (guiset.value("application-dir", "0").toBool() ?
                    ApplicationPath + "/" : config_dir + "data/");
    }
    guiset.endGroup();
    errorsList.clear();

    //dirs
    if((!QDir(config_dir).exists()) || (QFileInfo(config_dir).isFile()))
    {
        msgBox("Config error",
               QString("CONFIG DIR NOT FOUND AT: %1").arg(config_dir));
        return false;
    }

    QString main_ini = config_dir + "main.ini";

    if(!QFileInfo(main_ini).exists())
    {
        msgBox("Config error",
               QString("Can't open the 'main.ini' config file!"));
        return false;
    }

    QSettings mainset(main_ini, QSettings::IniFormat);
    mainset.setIniCodec("UTF-8");
    QString customAppPath = ApplicationPath;
    mainset.beginGroup("main");
    {
        config_name = mainset.value("config_name").toString().toStdString();
        customAppPath = mainset.value("application-path", ApplicationPath).toString();
        customAppPath.replace('\\', '/');
        bool appDir = mainset.value("application-dir", false).toBool();
        data_dir = (appDir ? customAppPath + "/" : config_dir + "data/");

        if(QDir(ApplicationPath + "/" + data_dir).exists()) //Check as relative
            data_dir = ApplicationPath + "/" + data_dir;
        else if(!QDir(data_dir).exists()) //Check as absolute
        {
            msgBox("Config error",
                   QString("Config data path not exists: %1").arg(data_dir));
            return false;
        }

        data_dir = QDir(data_dir).absolutePath() + "/";
        QString url     = mainset.value("home-page", "http://engine.wohlnet.ru/config_packs/").toString();
        QString version = mainset.value("pge-engine-version", "0.0").toString();
        bool ver_notify = mainset.value("enable-version-notify", true).toBool();

        if(ver_notify && (version != VersionCmp::compare(QString("%1").arg(_LATEST_STABLE), version)))
        {
            std::string title = "Legacy configuration package";
            std::string msg = QString("You have a legacy configuration package.\n"
                                      "Game will be started, but you may have a some problems with gameplay.\n\n"
                                      "Please download and install latest version of a configuration package:\n\n"
                                      "Download: %1\n"
                                      "Note: most of config packs are updates togeter with PGE,\n"
                                      "therefore you can use same link to get updated version")
                              /*.arg("<a href=\"%1\">%1</a>")*/.arg(url).toStdString();
            SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_WARNING,
                                     title.c_str(), msg.c_str(),
                                     PGE_Window::window);
            QDesktopServices::openUrl(QUrl(url));
        }

        if(appDir)
            dirs.worlds = customAppPath + "/" + mainset.value("worlds", config_id + "_worlds").toString() + "/";
        else
            dirs.worlds = AppPathManager::userAppDir() + "/" + mainset.value("worlds", config_id + "_worlds").toString() + "/";

        if(!QDir(dirs.worlds).exists())
            QDir().mkpath(dirs.worlds);

        dirs.music = data_dir + mainset.value("music", "data/music").toString() + "/";
        dirs.sounds = data_dir + mainset.value("sound", "data/sound").toString() + "/";
        dirs.glevel = data_dir + mainset.value("graphics-level", "data/graphics/level").toString() + "/";
        dirs.gworld = data_dir + mainset.value("graphics-worldmap", "data/graphics/worldmap").toString() + "/";
        dirs.gplayble = data_dir + mainset.value("graphics-characters", "data/graphics/characters").toString() + "/";
        dirs.gcommon = config_dir + "data/" + mainset.value("graphics-common", "data-custom").toString() + "/";
        setup_Scripts.lvl_local  = mainset.value("local-script-name-lvl", "level.lua").toString();
        setup_Scripts.lvl_common = mainset.value("common-script-name-lvl", "level.lua").toString();
        setup_Scripts.wld_local  = mainset.value("local-script-name-wld", "world.lua").toString();
        setup_Scripts.wld_common = mainset.value("common-script-name-wld", "world.lua").toString();
        dirs.gcustom = data_dir + mainset.value("custom-data", "data-custom").toString() + "/";
    }
    mainset.endGroup();
    mainset.beginGroup("graphics");
    {
        default_grid = mainset.value("default-grid", 32).toUInt();
    }
    mainset.endGroup();

    if(mainset.status() != QSettings::NoError)
    {
        msgBox("Config error",
               QString("ERROR LOADING main.ini N:%1").arg(mainset.status()));
        return false;
    }

    ////////////////////////////////Preparing////////////////////////////////////////
    refreshPaths();
    //////////////////////////////////////////////////////////////////////////////////

    if(!loadEngineSettings()) //!< Load engine.ini file
        return false;

    if(!loadDefaultMusics())
        return false;

    if(!loadDefaultSounds())
        return false;

    if(!loadSoundRolesTable())
        return false;

    /********Payable characters config should be loaded always!*******/
    if(!loadPlayableCharacters()) //!< Load lvl_characters.ini file
        return false;

    return true;
}