예제 #1
0
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()));
    }
}
예제 #2
0
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()));
    }
}
예제 #3
0
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;
}
예제 #4
0
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;
}