aboutsummaryrefslogtreecommitdiff
path: root/src/Protocols/overrides.cpp
blob: 957c4898cfa44e095f6b9a7d66fd6b3bac520401 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "overrides.h"

// some games use different key/value pairs. override with known key.
QString overrideKey(const QString &rawKey)
{
    // convert to lowercase
    QString key = rawKey.toLower();

    // some keys are indexed, like "player_0".
    if ( _index_match.indexIn(key) >= 0 )
    {
        // find keyword without index and match key
        if ( _validKeys.contains( _index_match.cap(1) ) ) // group starts at 1, not 0
        {
            // concat the index back and return found override
            return _validKeys.value( _index_match.cap(1), key ) + _index_match.cap(2);
        }
    }
    else
    {
        // non-indexed key
        if ( _validKeys.contains( key ) )
        {
            // return found override
            return _validKeys.value(key, key);
        }
    }

    // no override found. return original.
    return key;
}

// some games deviate from the gamename protocol. override with correct gamename
QString overrideGamename(const QString &gamenameIn)
{
    // convert to lowercase
    QString gamename = gamenameIn.toLower();

    if ( _validGamenames.contains(gamename ) )
    {
        return _validGamenames.value(gamename, gamename);
    }
    return gamename;
}