File indexing completed on 2024-04-28 07:51:16

0001 /*
0002     SPDX-FileCopyrightText: 2007-2009 Dmitry Suzdalev <dimsuz@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "highscores.h"
0008 
0009 #include <KUser>
0010 #include <KConfigGroup>
0011 
0012 #include <QStandardPaths>
0013 
0014 KAtomicHighscores::KAtomicHighscores()
0015 {
0016     KUser user;
0017     m_playerName =  user.property(KUser::FullName).toString().isEmpty() ? user.loginName() : user.property(KUser::FullName).toString();
0018 
0019     m_hsFile = KSharedConfig::openConfig( QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QLatin1Char('/') + QStringLiteral("highscores"), KConfig::SimpleConfig);
0020 }
0021 
0022 bool KAtomicHighscores::addScore( int numMoves, const QString& levelSetName, int level )
0023 {
0024     KConfigGroup userHsGroup( m_hsFile, QStringLiteral("Highscores_")+m_playerName );
0025     KConfigGroup levelSetGroup( &userHsGroup, levelSetName );
0026 
0027     QString keyStr = QStringLiteral("Level")+QString::number(level);
0028     int curHighScore = levelSetGroup.readEntry( keyStr, -1 );
0029     if( numMoves < curHighScore || curHighScore == -1 ) // new highscore!
0030     {
0031         levelSetGroup.writeEntry( keyStr, numMoves );
0032         return true;
0033     }
0034     return false;
0035 }
0036 
0037 int KAtomicHighscores::levelHighscore( const QString& levelSetName, int level ) const
0038 {
0039     KConfigGroup userHsGroup( m_hsFile, QStringLiteral("Highscores_")+m_playerName );
0040     KConfigGroup levelSetGroup( &userHsGroup, levelSetName );
0041 
0042     QString keyStr = QStringLiteral("Level")+QString::number(level);
0043     return levelSetGroup.readEntry( keyStr, 0 );
0044 }