void dataconfigs::loadLevelBGO() { unsigned int i; obj_bgo sbgo; unsigned long bgo_total=0; QString bgo_ini = config_dir + "lvl_bgo.ini"; if(!QFile::exists(bgo_ini)) { addError(QString("ERROR LOADING lvl_bgo.ini: file does not exist"), PGE_LogLevel::Critical); return; } QSettings bgoset(bgo_ini, QSettings::IniFormat); bgoset.setIniCodec("UTF-8"); main_bgo.clear(); //Clear old // index_bgo.clear(); bgoset.beginGroup("background-main"); bgo_total = bgoset.value("total", "0").toInt(); total_data +=bgo_total; bgoset.endGroup(); emit progressPartNumber(1); emit progressMax(bgo_total); emit progressValue(0); emit progressTitle(QObject::tr("Loading BGOs...")); ConfStatus::total_bgo = bgo_total; main_bgo.allocateSlots(bgo_total); if(ConfStatus::total_bgo==0) { addError(QString("ERROR LOADING lvl_bgo.ini: number of items not define, or empty config"), PGE_LogLevel::Critical); return; } for(i=1; i<=bgo_total; i++) { emit progressValue(i); if( loadLevelBGO(sbgo, QString("background-"+QString::number(i)), 0, "", &bgoset) ) { sbgo.id = i; main_bgo.storeElement(i, sbgo); } if( bgoset.status() != QSettings::NoError ) { addError(QString("ERROR LOADING lvl_bgo.ini N:%1 (bgo-%2)").arg(bgoset.status()).arg(i), PGE_LogLevel::Critical); } } if((unsigned int)main_bgo.stored()<bgo_total) { addError(QString("Not all BGOs loaded! Total: %1, Loaded: %2").arg(bgo_total).arg(main_bgo.stored())); } }
void dataconfigs::loadLevelBGO(QProgressDialog *prgs) { unsigned int i; obj_bgo sbgo; unsigned long bgo_total=0; QString bgo_ini = config_dir + "lvl_bgo.ini"; if(!QFile::exists(bgo_ini)) { addError(QString("ERROR LOADING lvl_bgo.ini: file does not exist"), QtCriticalMsg); return; } QSettings bgoset(bgo_ini, QSettings::IniFormat); bgoset.setIniCodec("UTF-8"); main_bgo.clear(); //Clear old index_bgo.clear(); bgoset.beginGroup("background-main"); bgo_total = bgoset.value("total", "0").toInt(); total_data +=bgo_total; bgoset.endGroup(); if(prgs) prgs->setMaximum(bgo_total); if(prgs) prgs->setLabelText(QApplication::tr("Loading BGOs...")); ConfStatus::total_bgo = bgo_total; //creation of empty indexes of arrayElements bgoIndexes bgoIndex; for(i=0;i<=bgo_total; i++) { bgoIndex.i=i; bgoIndex.type=0; bgoIndex.smbx64_sp=0; index_bgo.push_back(bgoIndex); } if(ConfStatus::total_bgo==0) { addError(QString("ERROR LOADING lvl_bgo.ini: number of items not define, or empty config"), QtCriticalMsg); return; } for(i=1; i<=bgo_total; i++) { qApp->processEvents(); if(prgs) { if(!prgs->wasCanceled()) prgs->setValue(i); } bgoset.beginGroup( QString("background-"+QString::number(i)) ); sbgo.name = bgoset.value("name", "").toString(); if(sbgo.name=="") { addError(QString("BGO-%1 Item name isn't defined").arg(i)); goto skipBGO; } sbgo.group = bgoset.value("group", "_NoGroup").toString(); sbgo.category = bgoset.value("category", "_Other").toString(); sbgo.grid = bgoset.value("grid", default_grid).toInt(); sbgo.view = (int)(bgoset.value("view", "background").toString()=="foreground"); sbgo.offsetX = bgoset.value("offset-x", "0").toInt(); sbgo.offsetY = bgoset.value("offset-y", "0").toInt(); sbgo.zOffset = bgoset.value("z-offset", "0").toInt(); imgFile = bgoset.value("image", "").toString(); sbgo.image_n = imgFile; if( (imgFile!="") ) { tmp = imgFile.split(".", QString::SkipEmptyParts); if(tmp.size()==2) imgFileM = tmp[0] + "m." + tmp[1]; else imgFileM = ""; sbgo.mask_n = imgFileM; mask = QPixmap(); if(tmp.size()==2) mask = QPixmap(bgoPath + imgFileM); sbgo.mask = mask; sbgo.image = GraphicsHelps::setAlphaMask(QPixmap(bgoPath + imgFile), sbgo.mask); if(sbgo.image.isNull()) { addError(QString("BGO-%1 Brocken image file").arg(i)); goto skipBGO; } } else { addError(QString("BGO-%1 Image filename isn't defined").arg(i)); goto skipBGO; } /* { sbgo.image = QPixmap(QApplication::applicationDirPath() + "/" + "data/unknown_bgo.gif"); sbgo.mask_n = ""; }*/ sbgo.climbing = (bgoset.value("climbing", "0").toString()=="1"); sbgo.animated = (bgoset.value("animated", "0").toString()=="1"); sbgo.frames = bgoset.value("frames", "1").toInt(); sbgo.framespeed = bgoset.value("frame-speed", "125").toInt(); sbgo.id = i; main_bgo.push_back(sbgo); //Add to Index if(i <= (unsigned int)index_bgo.size()) { index_bgo[i].i = i-1; index_bgo[i].smbx64_sp = bgoset.value("smbx64-sort-priority", "0").toLongLong(); //WriteToLog(QtDebugMsg, QString("Got SMBX64 BGO Sorting priority -> %1").arg( index_bgo[i].smbx64_sp ) ); } skipBGO: bgoset.endGroup(); if( bgoset.status() != QSettings::NoError ) { addError(QString("ERROR LOADING lvl_bgo.ini N:%1 (bgo-%2)").arg(bgoset.status()).arg(i), QtCriticalMsg); } } if((unsigned int)main_bgo.size()<bgo_total) { addError(QString("Not all BGOs loaded! Total: %1, Loaded: %2").arg(bgo_total).arg(main_bgo.size())); } }
bool ConfigManager::loadLevelBGO() { unsigned int i; obj_bgo sbgo; unsigned long bgo_total=0; QString bgo_ini = config_dir + "lvl_bgo.ini"; if(!QFile::exists(bgo_ini)) { addError(QString("ERROR LOADING lvl_bgo.ini: file does not exist"), QtCriticalMsg); PGE_MsgBox msgBox(NULL, QString("ERROR LOADING lvl_bgo.ini: file does not exist"), PGE_MsgBox::msg_fatal); msgBox.exec(); return false; } QSettings bgoset(bgo_ini, QSettings::IniFormat); bgoset.setIniCodec("UTF-8"); lvl_bgo_indexes.clear();//Clear old bgoset.beginGroup("background-main"); bgo_total = bgoset.value("total", "0").toInt(); bgoset.endGroup(); for(i=1; i<=bgo_total; i++) { sbgo.isInit = false; sbgo.image = NULL; sbgo.textureArrayId = 0; sbgo.animator_ID = 0; bgoset.beginGroup( QString("background-"+QString::number(i)) ); sbgo.name = bgoset.value("name", "").toString(); if(sbgo.name=="") { addError(QString("BGO-%1 Item name isn't defined").arg(i)); goto skipBGO; } sbgo.group = bgoset.value("group", "_NoGroup").toString(); sbgo.category = bgoset.value("category", "_Other").toString(); //sbgo.grid = bgoset.value("grid", default_grid).toInt(); { QString tmpStr=bgoset.value("view", "background").toString(); if(tmpStr=="foreground2") sbgo.view = 2; else if(tmpStr=="foreground") sbgo.view = 1; else if(tmpStr=="background") sbgo.view = 0; else if(tmpStr=="background2") sbgo.view = -1; else sbgo.view = 0; } sbgo.offsetX = bgoset.value("offset-x", "0").toInt(); sbgo.offsetY = bgoset.value("offset-y", "0").toInt(); sbgo.zOffset = bgoset.value("z-offset", "0").toInt(); imgFile = bgoset.value("image", "").toString(); { QString err; GraphicsHelps::loadMaskedImage(bgoPath, imgFile, sbgo.mask_n, err); sbgo.image_n = imgFile; if( imgFile=="" ) { addError(QString("BGO-%1 Image filename isn't defined.\n%2").arg(i).arg(err)); goto skipBGO; } } sbgo.climbing = (bgoset.value("climbing", 0).toBool()); sbgo.animated = (bgoset.value("animated", 0).toBool()); sbgo.frames = bgoset.value("frames", "1").toInt(); NumberLimiter::apply(sbgo.frames, 1u); sbgo.framespeed = bgoset.value("frame-speed", "125").toInt(); NumberLimiter::apply(sbgo.framespeed, 1u); sbgo.frame_h = 0;//(sbgo.animated? qRound(qreal(sbgo.image.height())/sbgo.frames) : sbgo.image.height()); NumberLimiter::apply(sbgo.frame_h, 0u); sbgo.display_frame = bgoset.value("display-frame", "0").toInt(); NumberLimiter::apply(sbgo.display_frame, 0u); sbgo.id = i; //lvl_bgo.push_back(sbgo); //Add to Index lvl_bgo_indexes[sbgo.id] = sbgo; skipBGO: bgoset.endGroup(); if( bgoset.status() != QSettings::NoError ) { addError(QString("ERROR LOADING lvl_bgo.ini N:%1 (bgo-%2)").arg(bgoset.status()).arg(i), QtCriticalMsg); } } if((unsigned int)lvl_bgo_indexes.size()<bgo_total) { addError(QString("Not all BGOs loaded! Total: %1, Loaded: %2").arg(bgo_total).arg(lvl_bgo_indexes.size())); PGE_MsgBox msgBox(NULL, QString("Not all BGOs loaded! Total: %1, Loaded: %2").arg(bgo_total).arg(lvl_bgo_indexes.size()), PGE_MsgBox::msg_error); msgBox.exec(); } return true; }
bool ConfigManager::loadLevelBGO() { unsigned int i; obj_bgo sbgo; unsigned long bgo_total = 0; bool useDirectory = false; std::string bgo_ini = config_dirSTD + "lvl_bgo.ini"; std::string nestDir = ""; if(!Files::fileExists(bgo_ini)) { const char* msg = "ERROR LOADING lvl_bgo.ini: file does not exist"; addError(msg); PGE_MsgBox msgBox(NULL, msg, PGE_MsgBox::msg_fatal); msgBox.exec(); return false; } IniProcessing bgoset(bgo_ini); lvl_bgo_indexes.clear();//Clear old bgoset.beginGroup("background-main"); bgo_total = bgoset.value("total", 0).toULongLong(); nestDir = bgoset.value("config-dir", "").toString(); if(!nestDir.empty()) { nestDir = config_dirSTD + nestDir; useDirectory = true; } bgoset.endGroup(); lvl_bgo_indexes.allocateSlots(bgo_total); for(i = 1; i <= bgo_total; i++) { if(useDirectory) { if(!loadLevelBGO(sbgo, "background", nullptr, fmt::format_ne("{0}/background-{1}.ini", nestDir, i))) return false; } else { if(!loadLevelBGO(sbgo, fmt::format_ne("background-{0}", i), nullptr, "", &bgoset)) return false; } sbgo.setup.id = i; //Store loaded config lvl_bgo_indexes.storeElement(sbgo.setup.id, sbgo); //Load custom config if possible loadCustomConfig<obj_bgo>(lvl_bgo_indexes, i, Dir_BGO, "background", "background", &loadLevelBGO); if(bgoset.lastError() != IniProcessing::ERR_OK) addError(fmt::format_ne("ERROR LOADING lvl_bgo.ini N:{0} (bgo-{1})", bgoset.lastError(), i)); } if(lvl_bgo_indexes.stored() < bgo_total) { std::string msg = fmt::format_ne("Not all BGOs loaded! Total: {0}, Loaded: {1}", bgo_total, lvl_bgo_indexes.stored()); addError(msg); PGE_MsgBox msgBox(NULL, msg, PGE_MsgBox::msg_error); msgBox.exec(); } return true; }