Exemplo n.º 1
0
QMap<QString, int> getExp(const char name[]) {
    QMap<QString, QMap<QString, int> > expMap = readExpMap();

    QMap<QString, int> expValueMap;

    QMap<QString, QMap<QString, int> >::iterator find = expMap.find(name);
    if(find != expMap.end()) {
        expValueMap = find.value();
    } else {
        QMapIterator<QString, QMap<QString, int> > nearestValue(expMap);
        while (nearestValue.hasNext()) {
            nearestValue.next();
            size_t nameSize = strlen(name);
            const char* c = nearestValue.key().toLocal8Bit().data();
            for(unsigned int j = 0; j < nameSize; j++) {
                if(c[j] == 0 || c[j] != name[j]) {
                    break;
                } else {
                    if(j == nameSize - 1) {
                        expValueMap = nearestValue.value();
                    }
                }
            }
        }
    }
    return expValueMap;
}
Exemplo n.º 2
0
QMap<QString, int> GameDataContainer::getExp(QString name) {
    lock.lockForRead();
    QMap<QString, QMap<QString, int> > exp = this->expMap;
    lock.unlock();

    QMap<QString, int> expValueMap;

    QMap<QString, QMap<QString, int> >::iterator find = exp.find(name);
    if(find != exp.end()) {
        expValueMap = find.value();
    } else {
        QMapIterator<QString, QMap<QString, int> > nearestValue(exp);
        while (nearestValue.hasNext()) {
            nearestValue.next();
            size_t nameSize = strlen(name.toLocal8Bit().data());
            const char* c = nearestValue.key().toLocal8Bit().data();
            for(unsigned int j = 0; j < nameSize; j++) {
                if(c[j] == 0 || c[j] != name[j]) {
                    break;
                } else {
                    if(j == nameSize - 1) {
                        expValueMap = nearestValue.value();
                    }
                }
            }
        }
    }
    return expValueMap;
}