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; }
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; }