File indexing completed on 2024-04-14 03:59:17

0001 /*
0002     SPDX-FileCopyrightText: 2007 Dmitry Suzdalev <dimsuz@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KATOMIC_HIGHSCORES_H
0008 #define KATOMIC_HIGHSCORES_H
0009 
0010 #include <KSharedConfig>
0011 
0012 #include <QString>
0013 
0014 /**
0015  * This class is used to manage katomic's highscores.
0016  * There's one highscore for each level per each player - it's
0017  * the number of moves it took to complete level.
0018  */
0019 class KAtomicHighscores
0020 {
0021 public:
0022     /**
0023      * Constructor.
0024      * By default sets player name to current user login name
0025      * @see setCurrentPlayerName
0026      */
0027     KAtomicHighscores();
0028     /**
0029      * Changes current player name to playerName
0030      */
0031     void setCurrentPlayerName( const QString& playerName ) { m_playerName = playerName; }
0032     /**
0033      * @return current player name
0034      */
0035     QString currentPlayerName() const { return m_playerName; }
0036     /**
0037      * Tries to add new result to highscores.
0038      * If numMoves is lesser than current highscore for this level,
0039      * this result will become a new highscore of currentPlayerName for this level
0040      * @return whether numMoves was set as a new highscore
0041      */
0042     bool addScore( int numMoves, const QString& levelSetName, int level );
0043     /**
0044      * @return highscore of current player for level
0045      */
0046     int levelHighscore( const QString& levelSetName, int level ) const;
0047 private:
0048     /**
0049      * Current player name
0050      */
0051     QString m_playerName;
0052 
0053     KSharedConfigPtr m_hsFile;
0054 };
0055 
0056 #endif